001 /** 002 * Copyright (c) 2000-present Liferay, Inc. All rights reserved. 003 * 004 * This library is free software; you can redistribute it and/or modify it under 005 * the terms of the GNU Lesser General Public License as published by the Free 006 * Software Foundation; either version 2.1 of the License, or (at your option) 007 * any later version. 008 * 009 * This library is distributed in the hope that it will be useful, but WITHOUT 010 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 011 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 012 * details. 013 */ 014 015 package com.liferay.portal.kernel.service; 016 017 import aQute.bnd.annotation.ProviderType; 018 019 import com.liferay.exportimport.kernel.lar.PortletDataContext; 020 021 import com.liferay.portal.kernel.dao.orm.ActionableDynamicQuery; 022 import com.liferay.portal.kernel.dao.orm.DynamicQuery; 023 import com.liferay.portal.kernel.dao.orm.ExportActionableDynamicQuery; 024 import com.liferay.portal.kernel.dao.orm.IndexableActionableDynamicQuery; 025 import com.liferay.portal.kernel.dao.orm.Projection; 026 import com.liferay.portal.kernel.exception.PortalException; 027 import com.liferay.portal.kernel.exception.SystemException; 028 import com.liferay.portal.kernel.model.Organization; 029 import com.liferay.portal.kernel.model.PersistedModel; 030 import com.liferay.portal.kernel.model.SystemEventConstants; 031 import com.liferay.portal.kernel.search.BaseModelSearchResult; 032 import com.liferay.portal.kernel.search.Hits; 033 import com.liferay.portal.kernel.search.Indexable; 034 import com.liferay.portal.kernel.search.IndexableType; 035 import com.liferay.portal.kernel.search.Sort; 036 import com.liferay.portal.kernel.systemevent.SystemEvent; 037 import com.liferay.portal.kernel.transaction.Isolation; 038 import com.liferay.portal.kernel.transaction.Propagation; 039 import com.liferay.portal.kernel.transaction.Transactional; 040 import com.liferay.portal.kernel.util.OrderByComparator; 041 042 import java.io.Serializable; 043 044 import java.util.LinkedHashMap; 045 import java.util.List; 046 047 /** 048 * Provides the local service interface for Organization. Methods of this 049 * service will not have security checks based on the propagated JAAS 050 * credentials because this service can only be accessed from within the same 051 * VM. 052 * 053 * @author Brian Wing Shun Chan 054 * @see OrganizationLocalServiceUtil 055 * @see com.liferay.portal.service.base.OrganizationLocalServiceBaseImpl 056 * @see com.liferay.portal.service.impl.OrganizationLocalServiceImpl 057 * @generated 058 */ 059 @ProviderType 060 @Transactional(isolation = Isolation.PORTAL, rollbackFor = { 061 PortalException.class, SystemException.class}) 062 public interface OrganizationLocalService extends BaseLocalService, 063 PersistedModelLocalService { 064 /* 065 * NOTE FOR DEVELOPERS: 066 * 067 * Never modify or reference this interface directly. Always use {@link OrganizationLocalServiceUtil} to access the organization local service. Add custom service methods to {@link com.liferay.portal.service.impl.OrganizationLocalServiceImpl} and rerun ServiceBuilder to automatically copy the method declarations to this interface. 068 */ 069 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 070 public boolean hasGroupOrganization(long groupId, long organizationId); 071 072 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 073 public boolean hasGroupOrganizations(long groupId); 074 075 /** 076 * Returns <code>true</code> if the password policy has been assigned to the 077 * organization. 078 * 079 * @param passwordPolicyId the primary key of the password policy 080 * @param organizationId the primary key of the organization 081 * @return <code>true</code> if the password policy has been assigned to the 082 organization; <code>false</code> otherwise 083 */ 084 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 085 public boolean hasPasswordPolicyOrganization(long passwordPolicyId, 086 long organizationId); 087 088 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 089 public boolean hasUserOrganization(long userId, long organizationId); 090 091 /** 092 * Returns <code>true</code> if the user is a member of the organization, 093 * optionally focusing on suborganizations or the specified organization. 094 * This method is usually called to determine if the user has view access to 095 * a resource belonging to the organization. 096 * 097 * <ol> 098 * <li> 099 * If <code>inheritSuborganizations=<code>false</code></code>: 100 * the method checks whether the user belongs to the organization specified 101 * by <code>organizationId</code>. The parameter 102 * <code>includeSpecifiedOrganization</code> is ignored. 103 * </li> 104 * <li> 105 * The parameter <code>includeSpecifiedOrganization</code> is 106 * ignored unless <code>inheritSuborganizations</code> is also 107 * <code>true</code>. 108 * </li> 109 * <li> 110 * If <code>inheritSuborganizations=<code>true</code></code> and 111 * <code>includeSpecifiedOrganization=<code>false</code></code>: the method 112 * checks 113 * whether the user belongs to one of the child organizations of the one 114 * specified by <code>organizationId</code>. 115 * </li> 116 * <li> 117 * If <code>inheritSuborganizations=<code>true</code></code> and 118 * <code>includeSpecifiedOrganization=<code>true</code></code>: the method 119 * checks whether 120 * the user belongs to the organization specified by 121 * <code>organizationId</code> or any of 122 * its child organizations. 123 * </li> 124 * </ol> 125 * 126 * @param userId the primary key of the organization's user 127 * @param organizationId the primary key of the organization 128 * @param inheritSuborganizations if <code>true</code> suborganizations are 129 considered in the determination 130 * @param includeSpecifiedOrganization if <code>true</code> the 131 organization specified by <code>organizationId</code> is 132 considered in the determination 133 * @return <code>true</code> if the user has access to the organization; 134 <code>false</code> otherwise 135 * @see com.liferay.portal.kernel.service.persistence.OrganizationFinder 136 */ 137 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 138 public boolean hasUserOrganization(long userId, long organizationId, 139 boolean inheritSuborganizations, boolean includeSpecifiedOrganization) 140 throws PortalException; 141 142 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 143 public boolean hasUserOrganizations(long userId); 144 145 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 146 public ActionableDynamicQuery getActionableDynamicQuery(); 147 148 public DynamicQuery dynamicQuery(); 149 150 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 151 public ExportActionableDynamicQuery getExportActionableDynamicQuery( 152 PortletDataContext portletDataContext); 153 154 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 155 public IndexableActionableDynamicQuery getIndexableActionableDynamicQuery(); 156 157 /** 158 * Adds the organization to the database. Also notifies the appropriate model listeners. 159 * 160 * @param organization the organization 161 * @return the organization that was added 162 */ 163 @Indexable(type = IndexableType.REINDEX) 164 public Organization addOrganization(Organization organization); 165 166 /** 167 * Adds an organization. 168 * 169 * <p> 170 * This method handles the creation and bookkeeping of the organization 171 * including its resources, metadata, and internal data structures. It is 172 * not necessary to make a subsequent call to {@link 173 * #addOrganizationResources(long, Organization)}. 174 * </p> 175 * 176 * @param userId the primary key of the creator/owner of the organization 177 * @param parentOrganizationId the primary key of the organization's parent 178 organization 179 * @param name the organization's name 180 * @param site whether the organization is to be associated with a main 181 site 182 * @return the organization 183 */ 184 public Organization addOrganization(long userId, long parentOrganizationId, 185 java.lang.String name, boolean site) throws PortalException; 186 187 /** 188 * Adds an organization. 189 * 190 * <p> 191 * This method handles the creation and bookkeeping of the organization 192 * including its resources, metadata, and internal data structures. It is 193 * not necessary to make a subsequent call to {@link 194 * #addOrganizationResources(long, Organization)}. 195 * </p> 196 * 197 * @param userId the primary key of the creator/owner of the organization 198 * @param parentOrganizationId the primary key of the organization's parent 199 organization 200 * @param name the organization's name 201 * @param type the organization's type 202 * @param regionId the primary key of the organization's region 203 * @param countryId the primary key of the organization's country 204 * @param statusId the organization's workflow status 205 * @param comments the comments about the organization 206 * @param site whether the organization is to be associated with a main 207 site 208 * @param serviceContext the service context to be applied (optionally 209 <code>null</code>). Can set asset category IDs, asset tag names, 210 and expando bridge attributes for the organization. 211 * @return the organization 212 */ 213 public Organization addOrganization(long userId, long parentOrganizationId, 214 java.lang.String name, java.lang.String type, long regionId, 215 long countryId, long statusId, java.lang.String comments, boolean site, 216 ServiceContext serviceContext) throws PortalException; 217 218 /** 219 * Creates a new organization with the primary key. Does not add the organization to the database. 220 * 221 * @param organizationId the primary key for the new organization 222 * @return the new organization 223 */ 224 public Organization createOrganization(long organizationId); 225 226 /** 227 * Deletes the organization from the database. Also notifies the appropriate model listeners. 228 * 229 * @param organization the organization 230 * @return the organization that was removed 231 * @throws PortalException 232 */ 233 @Indexable(type = IndexableType.DELETE) 234 @SystemEvent(type = SystemEventConstants.TYPE_DELETE) 235 public Organization deleteOrganization(Organization organization) 236 throws PortalException; 237 238 /** 239 * Deletes the organization with the primary key from the database. Also notifies the appropriate model listeners. 240 * 241 * @param organizationId the primary key of the organization 242 * @return the organization that was removed 243 * @throws PortalException if a organization with the primary key could not be found 244 */ 245 @Indexable(type = IndexableType.DELETE) 246 public Organization deleteOrganization(long organizationId) 247 throws PortalException; 248 249 /** 250 * Returns the organization with the name. 251 * 252 * @param companyId the primary key of the organization's company 253 * @param name the organization's name 254 * @return the organization with the name, or <code>null</code> if no 255 organization could be found 256 */ 257 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 258 public Organization fetchOrganization(long companyId, java.lang.String name); 259 260 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 261 public Organization fetchOrganization(long organizationId); 262 263 /** 264 * Returns the organization with the matching UUID and company. 265 * 266 * @param uuid the organization's UUID 267 * @param companyId the primary key of the company 268 * @return the matching organization, or <code>null</code> if a matching organization could not be found 269 */ 270 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 271 public Organization fetchOrganizationByUuidAndCompanyId( 272 java.lang.String uuid, long companyId); 273 274 /** 275 * Returns the organization with the name. 276 * 277 * @param companyId the primary key of the organization's company 278 * @param name the organization's name 279 * @return the organization with the name 280 */ 281 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 282 public Organization getOrganization(long companyId, java.lang.String name) 283 throws PortalException; 284 285 /** 286 * Returns the organization with the primary key. 287 * 288 * @param organizationId the primary key of the organization 289 * @return the organization 290 * @throws PortalException if a organization with the primary key could not be found 291 */ 292 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 293 public Organization getOrganization(long organizationId) 294 throws PortalException; 295 296 /** 297 * Returns the organization with the matching UUID and company. 298 * 299 * @param uuid the organization's UUID 300 * @param companyId the primary key of the company 301 * @return the matching organization 302 * @throws PortalException if a matching organization could not be found 303 */ 304 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 305 public Organization getOrganizationByUuidAndCompanyId( 306 java.lang.String uuid, long companyId) throws PortalException; 307 308 /** 309 * Updates the organization in the database or adds it if it does not yet exist. Also notifies the appropriate model listeners. 310 * 311 * @param organization the organization 312 * @return the organization that was updated 313 */ 314 @Indexable(type = IndexableType.REINDEX) 315 public Organization updateOrganization(Organization organization); 316 317 /** 318 * Updates the organization. 319 * 320 * @param companyId the primary key of the organization's company 321 * @param organizationId the primary key of the organization 322 * @param parentOrganizationId the primary key of organization's parent 323 organization 324 * @param name the organization's name 325 * @param type the organization's type 326 * @param regionId the primary key of the organization's region 327 * @param countryId the primary key of the organization's country 328 * @param statusId the organization's workflow status 329 * @param comments the comments about the organization 330 * @param logo whether to update the ogranization's logo 331 * @param logoBytes the new logo image data 332 * @param site whether the organization is to be associated with a main 333 site 334 * @param serviceContext the service context to be applied (optionally 335 <code>null</code>). Can set asset category IDs and asset tag 336 names for the organization, and merge expando bridge attributes 337 for the organization. 338 * @return the organization 339 */ 340 public Organization updateOrganization(long companyId, long organizationId, 341 long parentOrganizationId, java.lang.String name, 342 java.lang.String type, long regionId, long countryId, long statusId, 343 java.lang.String comments, boolean logo, byte[] logoBytes, 344 boolean site, ServiceContext serviceContext) throws PortalException; 345 346 /** 347 * Updates the organization. 348 * 349 * @param companyId the primary key of the organization's company 350 * @param organizationId the primary key of the organization 351 * @param parentOrganizationId the primary key of organization's parent 352 organization 353 * @param name the organization's name 354 * @param type the organization's type 355 * @param regionId the primary key of the organization's region 356 * @param countryId the primary key of the organization's country 357 * @param statusId the organization's workflow status 358 * @param comments the comments about the organization 359 * @param site whether the organization is to be associated with a main 360 site 361 * @param serviceContext the service context to be applied (optionally 362 <code>null</code>). Can set asset category IDs and asset tag 363 names for the organization, and merge expando bridge 364 attributes for the organization. 365 * @return the organization 366 * @deprecated As of 7.0.0, replaced by {@link #updateOrganization(long, 367 long, long, String, String, long, long, long, String, 368 boolean, byte[], boolean, ServiceContext)} 369 */ 370 @java.lang.Deprecated 371 public Organization updateOrganization(long companyId, long organizationId, 372 long parentOrganizationId, java.lang.String name, 373 java.lang.String type, long regionId, long countryId, long statusId, 374 java.lang.String comments, boolean site, ServiceContext serviceContext) 375 throws PortalException; 376 377 /** 378 * @throws PortalException 379 */ 380 @Override 381 public PersistedModel deletePersistedModel(PersistedModel persistedModel) 382 throws PortalException; 383 384 @Override 385 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 386 public PersistedModel getPersistedModel(Serializable primaryKeyObj) 387 throws PortalException; 388 389 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 390 public BaseModelSearchResult<Organization> searchOrganizations( 391 long companyId, long parentOrganizationId, java.lang.String keywords, 392 LinkedHashMap<java.lang.String, java.lang.Object> params, int start, 393 int end, Sort sort) throws PortalException; 394 395 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 396 public BaseModelSearchResult<Organization> searchOrganizations( 397 long companyId, long parentOrganizationId, java.lang.String name, 398 java.lang.String type, java.lang.String street, java.lang.String city, 399 java.lang.String zip, java.lang.String region, 400 java.lang.String country, 401 LinkedHashMap<java.lang.String, java.lang.Object> params, 402 boolean andSearch, int start, int end, Sort sort) 403 throws PortalException; 404 405 /** 406 * Returns an ordered range of all the organizations that match the 407 * keywords, using the indexer. It is preferable to use this method instead 408 * of the non-indexed version whenever possible for performance reasons. 409 * 410 * <p> 411 * Useful when paginating results. Returns a maximum of <code>end - 412 * start</code> instances. <code>start</code> and <code>end</code> are not 413 * primary keys, they are indexes in the result set. Thus, <code>0</code> 414 * refers to the first result in the set. Setting both <code>start</code> 415 * and <code>end</code> to {@link QueryUtil#ALL_POS} will return the full 416 * result set. 417 * </p> 418 * 419 * @param companyId the primary key of the organization's company 420 * @param parentOrganizationId the primary key of the organization's parent 421 organization 422 * @param keywords the keywords (space separated), which may occur in the 423 organization's name, street, city, zipcode, type, region or 424 country (optionally <code>null</code>) 425 * @param params the finder parameters (optionally <code>null</code>). For 426 more information see {@link 427 com.liferay.portlet.usersadmin.util.OrganizationIndexer} 428 * @param start the lower bound of the range of organizations to return 429 * @param end the upper bound of the range of organizations to return (not 430 inclusive) 431 * @param sort the field and direction by which to sort (optionally 432 <code>null</code>) 433 * @return the matching organizations ordered by name 434 * @see com.liferay.portlet.usersadmin.util.OrganizationIndexer 435 */ 436 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 437 public Hits search(long companyId, long parentOrganizationId, 438 java.lang.String keywords, 439 LinkedHashMap<java.lang.String, java.lang.Object> params, int start, 440 int end, Sort sort); 441 442 /** 443 * Returns an ordered range of all the organizations whose name, type, or 444 * location fields match the keywords specified for them, using the indexer. 445 * It is preferable to use this method instead of the non-indexed version 446 * whenever possible for performance reasons. 447 * 448 * <p> 449 * Useful when paginating results. Returns a maximum of <code>end - 450 * start</code> instances. <code>start</code> and <code>end</code> are not 451 * primary keys, they are indexes in the result set. Thus, <code>0</code> 452 * refers to the first result in the set. Setting both <code>start</code> 453 * and <code>end</code> to {@link QueryUtil#ALL_POS} will return the full 454 * result set. 455 * </p> 456 * 457 * @param companyId the primary key of the organization's company 458 * @param parentOrganizationId the primary key of the organization's parent 459 organization 460 * @param name the name keywords (space separated, optionally 461 <code>null</code>) 462 * @param type the type keywords (optionally <code>null</code>) 463 * @param street the street keywords (optionally <code>null</code>) 464 * @param city the city keywords (optionally <code>null</code>) 465 * @param zip the zipcode keywords (optionally <code>null</code>) 466 * @param region the region keywords (optionally <code>null</code>) 467 * @param country the country keywords (optionally <code>null</code>) 468 * @param params the finder parameters (optionally <code>null</code>). For 469 more information see {@link 470 com.liferay.portlet.usersadmin.util.OrganizationIndexer}. 471 * @param andSearch whether every field must match its keywords or just one 472 field 473 * @param start the lower bound of the range of organizations to return 474 * @param end the upper bound of the range of organizations to return (not 475 inclusive) 476 * @param sort the field and direction by which to sort (optionally 477 <code>null</code>) 478 * @return the matching organizations ordered by <code>sort</code> 479 * @see com.liferay.portlet.usersadmin.util.OrganizationIndexer 480 */ 481 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 482 public Hits search(long companyId, long parentOrganizationId, 483 java.lang.String name, java.lang.String type, java.lang.String street, 484 java.lang.String city, java.lang.String zip, java.lang.String region, 485 java.lang.String country, 486 LinkedHashMap<java.lang.String, java.lang.Object> params, 487 boolean andSearch, int start, int end, Sort sort); 488 489 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 490 public int getGroupOrganizationsCount(long groupId); 491 492 /** 493 * Returns the number of organizations. 494 * 495 * @return the number of organizations 496 */ 497 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 498 public int getOrganizationsCount(); 499 500 /** 501 * Returns the number of organizations belonging to the parent organization. 502 * 503 * @param companyId the primary key of the organization's company 504 * @param parentOrganizationId the primary key of the organization's parent 505 organization 506 * @return the number of organizations belonging to the parent organization 507 */ 508 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 509 public int getOrganizationsCount(long companyId, long parentOrganizationId); 510 511 /** 512 * Returns the count of suborganizations of the organization. 513 * 514 * @param companyId the primary key of the organization's company 515 * @param organizationId the primary key of the organization 516 * @return the count of suborganizations of the organization 517 */ 518 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 519 public int getSuborganizationsCount(long companyId, long organizationId); 520 521 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 522 public int getUserOrganizationsCount(long userId); 523 524 /** 525 * Returns the number of organizations that match the keywords, type, 526 * region, and country. 527 * 528 * @param companyId the primary key of the organization's company 529 * @param parentOrganizationId the primary key of the organization's parent 530 organization 531 * @param keywords the keywords (space separated), which may occur in the 532 organization's name, street, city, or zipcode (optionally 533 <code>null</code>) 534 * @param type the organization's type (optionally <code>null</code>) 535 * @param regionId the primary key of the organization's region (optionally 536 <code>null</code>) 537 * @param countryId the primary key of the organization's country 538 (optionally <code>null</code>) 539 * @param params the finder parameters (optionally <code>null</code>). For 540 more information see {@link 541 com.liferay.portal.kernel.service.persistence.OrganizationFinder} 542 * @return the number of matching organizations 543 * @see com.liferay.portal.kernel.service.persistence.OrganizationFinder 544 */ 545 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 546 public int searchCount(long companyId, long parentOrganizationId, 547 java.lang.String keywords, java.lang.String type, 548 java.lang.Long regionId, java.lang.Long countryId, 549 LinkedHashMap<java.lang.String, java.lang.Object> params); 550 551 /** 552 * Returns the number of organizations with the type, region, and country, 553 * and whose name, street, city, and zipcode match the keywords specified 554 * for them. 555 * 556 * @param companyId the primary key of the organization's company 557 * @param parentOrganizationId the primary key of the organization's parent 558 organization 559 * @param name the name keywords (space separated, optionally 560 <code>null</code>) 561 * @param type the organization's type (optionally <code>null</code>) 562 * @param street the street keywords (optionally <code>null</code>) 563 * @param city the city keywords (optionally <code>null</code>) 564 * @param zip the zipcode keywords (optionally <code>null</code>) 565 * @param regionId the primary key of the organization's region (optionally 566 <code>null</code>) 567 * @param countryId the primary key of the organization's country 568 (optionally <code>null</code>) 569 * @param params the finder parameters (optionally <code>null</code>). For 570 more information see {@link 571 com.liferay.portal.kernel.service.persistence.OrganizationFinder} 572 * @param andOperator whether every field must match its keywords, or just 573 one field. For example, "organizations with the name 574 'Employees' and city 'Chicago'" vs "organizations with 575 the name 'Employees' or the city 'Chicago'". 576 * @return the number of matching organizations 577 * @see com.liferay.portal.kernel.service.persistence.OrganizationFinder 578 */ 579 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 580 public int searchCount(long companyId, long parentOrganizationId, 581 java.lang.String name, java.lang.String type, java.lang.String street, 582 java.lang.String city, java.lang.String zip, java.lang.Long regionId, 583 java.lang.Long countryId, 584 LinkedHashMap<java.lang.String, java.lang.Object> params, 585 boolean andOperator); 586 587 /** 588 * Returns the OSGi service identifier. 589 * 590 * @return the OSGi service identifier 591 */ 592 public java.lang.String getOSGiServiceIdentifier(); 593 594 /** 595 * Performs a dynamic query on the database and returns the matching rows. 596 * 597 * @param dynamicQuery the dynamic query 598 * @return the matching rows 599 */ 600 public <T> List<T> dynamicQuery(DynamicQuery dynamicQuery); 601 602 /** 603 * Performs a dynamic query on the database and returns a range of the matching rows. 604 * 605 * <p> 606 * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set. If <code>orderByComparator</code> is specified, then the query will include the given ORDER BY logic. If <code>orderByComparator</code> is absent and pagination is required (<code>start</code> and <code>end</code> are not {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS}), then the query will include the default ORDER BY logic from {@link com.liferay.portal.model.impl.OrganizationModelImpl}. If both <code>orderByComparator</code> and pagination are absent, for performance reasons, the query will not have an ORDER BY clause and the returned result set will be sorted on by the primary key in an ascending order. 607 * </p> 608 * 609 * @param dynamicQuery the dynamic query 610 * @param start the lower bound of the range of model instances 611 * @param end the upper bound of the range of model instances (not inclusive) 612 * @return the range of matching rows 613 */ 614 public <T> List<T> dynamicQuery(DynamicQuery dynamicQuery, int start, 615 int end); 616 617 /** 618 * Performs a dynamic query on the database and returns an ordered range of the matching rows. 619 * 620 * <p> 621 * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set. If <code>orderByComparator</code> is specified, then the query will include the given ORDER BY logic. If <code>orderByComparator</code> is absent and pagination is required (<code>start</code> and <code>end</code> are not {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS}), then the query will include the default ORDER BY logic from {@link com.liferay.portal.model.impl.OrganizationModelImpl}. If both <code>orderByComparator</code> and pagination are absent, for performance reasons, the query will not have an ORDER BY clause and the returned result set will be sorted on by the primary key in an ascending order. 622 * </p> 623 * 624 * @param dynamicQuery the dynamic query 625 * @param start the lower bound of the range of model instances 626 * @param end the upper bound of the range of model instances (not inclusive) 627 * @param orderByComparator the comparator to order the results by (optionally <code>null</code>) 628 * @return the ordered range of matching rows 629 */ 630 public <T> List<T> dynamicQuery(DynamicQuery dynamicQuery, int start, 631 int end, OrderByComparator<T> orderByComparator); 632 633 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 634 public List<Organization> getGroupOrganizations(long groupId); 635 636 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 637 public List<Organization> getGroupOrganizations(long groupId, int start, 638 int end); 639 640 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 641 public List<Organization> getGroupOrganizations(long groupId, int start, 642 int end, OrderByComparator<Organization> orderByComparator); 643 644 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 645 public List<Organization> getGroupUserOrganizations(long groupId, 646 long userId) throws PortalException; 647 648 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 649 public List<Organization> getNoAssetOrganizations(); 650 651 /** 652 * Returns a range of all the organizations. 653 * 654 * <p> 655 * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set. If <code>orderByComparator</code> is specified, then the query will include the given ORDER BY logic. If <code>orderByComparator</code> is absent and pagination is required (<code>start</code> and <code>end</code> are not {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS}), then the query will include the default ORDER BY logic from {@link com.liferay.portal.model.impl.OrganizationModelImpl}. If both <code>orderByComparator</code> and pagination are absent, for performance reasons, the query will not have an ORDER BY clause and the returned result set will be sorted on by the primary key in an ascending order. 656 * </p> 657 * 658 * @param start the lower bound of the range of organizations 659 * @param end the upper bound of the range of organizations (not inclusive) 660 * @return the range of organizations 661 */ 662 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 663 public List<Organization> getOrganizations(int start, int end); 664 665 /** 666 * Returns all the organizations belonging to the parent organization. 667 * 668 * @param companyId the primary key of the organization's company 669 * @param parentOrganizationId the primary key of the organization's parent 670 organization 671 * @return the organizations belonging to the parent organization 672 */ 673 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 674 public List<Organization> getOrganizations(long companyId, 675 long parentOrganizationId); 676 677 /** 678 * Returns a range of all the organizations belonging to the parent 679 * organization. 680 * 681 * <p> 682 * Useful when paginating results. Returns a maximum of <code>end - 683 * start</code> instances. <code>start</code> and <code>end</code> are not 684 * primary keys, they are indexes in the result set. Thus, <code>0</code> 685 * refers to the first result in the set. Setting both <code>start</code> 686 * and <code>end</code> to {@link QueryUtil#ALL_POS} will return the full 687 * result set. 688 * </p> 689 * 690 * @param companyId the primary key of the organization's company 691 * @param parentOrganizationId the primary key of the organization's parent 692 organization 693 * @param start the lower bound of the range of organizations to return 694 * @param end the upper bound of the range of organizations to return (not 695 inclusive) 696 * @return the range of organizations belonging to the parent organization 697 * @see com.liferay.portal.kernel.service.persistence.OrganizationPersistence#findByC_P( 698 long, long, int, int) 699 */ 700 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 701 public List<Organization> getOrganizations(long companyId, 702 long parentOrganizationId, int start, int end); 703 704 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 705 public List<Organization> getOrganizations(long userId, int start, int end, 706 OrderByComparator<Organization> obc) throws PortalException; 707 708 /** 709 * Returns the organizations with the primary keys. 710 * 711 * @param organizationIds the primary keys of the organizations 712 * @return the organizations with the primary keys 713 */ 714 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 715 public List<Organization> getOrganizations(long[] organizationIds) 716 throws PortalException; 717 718 /** 719 * Returns the parent organizations in order by closest ancestor. The list 720 * starts with the organization itself. 721 * 722 * @param organizationId the primary key of the organization 723 * @return the parent organizations in order by closest ancestor 724 */ 725 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 726 public List<Organization> getParentOrganizations(long organizationId) 727 throws PortalException; 728 729 /** 730 * Returns the suborganizations of the organizations. 731 * 732 * @param organizations the organizations from which to get 733 suborganizations 734 * @return the suborganizations of the organizations 735 */ 736 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 737 public List<Organization> getSuborganizations( 738 List<Organization> organizations); 739 740 /** 741 * Returns the suborganizations of the organization. 742 * 743 * @param companyId the primary key of the organization's company 744 * @param organizationId the primary key of the organization 745 * @return the suborganizations of the organization 746 */ 747 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 748 public List<Organization> getSuborganizations(long companyId, 749 long organizationId); 750 751 /** 752 * Returns the intersection of <code>allOrganizations</code> and 753 * <code>availableOrganizations</code>. 754 * 755 * @param allOrganizations the organizations to check for availability 756 * @param availableOrganizations the available organizations 757 * @return the intersection of <code>allOrganizations</code> and 758 <code>availableOrganizations</code> 759 */ 760 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 761 public List<Organization> getSubsetOrganizations( 762 List<Organization> allOrganizations, 763 List<Organization> availableOrganizations); 764 765 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 766 public List<Organization> getUserOrganizations(long userId); 767 768 /** 769 * Returns all the organizations with which the user is explicitly 770 * associated, optionally including the organizations that the user 771 * administers or owns. 772 * 773 * <p> 774 * A user is considered to be <i>explicitly</i> associated with an 775 * organization if his account is individually created within the 776 * organization or if the user is later added as a member. 777 * </p> 778 * 779 * @param userId the primary key of the user 780 * @param includeAdministrative whether to include the IDs of organizations 781 that the user administers or owns, even if he's not a member of 782 the organizations 783 * @return the organizations with which the user is explicitly associated, 784 optionally including the organizations that the user administers 785 or owns 786 */ 787 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 788 public List<Organization> getUserOrganizations(long userId, 789 boolean includeAdministrative) throws PortalException; 790 791 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 792 public List<Organization> getUserOrganizations(long userId, int start, 793 int end); 794 795 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 796 public List<Organization> getUserOrganizations(long userId, int start, 797 int end, OrderByComparator<Organization> orderByComparator); 798 799 /** 800 * Returns a name ordered range of all the organizations that match the 801 * keywords, type, region, and country, without using the indexer. It is 802 * preferable to use the indexed version {@link #search(long, long, String, 803 * LinkedHashMap, int, int, Sort)} instead of this method wherever possible 804 * for performance reasons. 805 * 806 * <p> 807 * Useful when paginating results. Returns a maximum of <code>end - 808 * start</code> instances. <code>start</code> and <code>end</code> are not 809 * primary keys, they are indexes in the result set. Thus, <code>0</code> 810 * refers to the first result in the set. Setting both <code>start</code> 811 * and <code>end</code> to {@link QueryUtil#ALL_POS} will return the full 812 * result set. 813 * </p> 814 * 815 * @param companyId the primary key of the organization's company 816 * @param parentOrganizationId the primary key of the organization's parent 817 organization 818 * @param keywords the keywords (space separated), which may occur in the 819 organization's name, street, city, or zipcode (optionally 820 <code>null</code>) 821 * @param type the organization's type (optionally <code>null</code>) 822 * @param regionId the primary key of the organization's region (optionally 823 <code>null</code>) 824 * @param countryId the primary key of the organization's country 825 (optionally <code>null</code>) 826 * @param params the finder params. For more information see {@link 827 com.liferay.portal.kernel.service.persistence.OrganizationFinder} 828 * @param start the lower bound of the range of organizations to return 829 * @param end the upper bound of the range of organizations to return (not 830 inclusive) 831 * @return the matching organizations ordered by name 832 * @see com.liferay.portal.kernel.service.persistence.OrganizationFinder 833 */ 834 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 835 public List<Organization> search(long companyId, long parentOrganizationId, 836 java.lang.String keywords, java.lang.String type, 837 java.lang.Long regionId, java.lang.Long countryId, 838 LinkedHashMap<java.lang.String, java.lang.Object> params, int start, 839 int end); 840 841 /** 842 * Returns an ordered range of all the organizations that match the 843 * keywords, type, region, and country, without using the indexer. It is 844 * preferable to use the indexed version {@link #search(long, long, String, 845 * String, String, String, String, String, String, LinkedHashMap, boolean, 846 * int, int, Sort)} instead of this method wherever possible for performance 847 * reasons. 848 * 849 * <p> 850 * Useful when paginating results. Returns a maximum of <code>end - 851 * start</code> instances. <code>start</code> and <code>end</code> are not 852 * primary keys, they are indexes in the result set. Thus, <code>0</code> 853 * refers to the first result in the set. Setting both <code>start</code> 854 * and <code>end</code> to {@link QueryUtil#ALL_POS} will return the full 855 * result set. 856 * </p> 857 * 858 * @param companyId the primary key of the organization's company 859 * @param parentOrganizationId the primary key of the organization's parent 860 organization 861 * @param keywords the keywords (space separated), which may occur in the 862 organization's name, street, city, or zipcode (optionally 863 <code>null</code>) 864 * @param type the organization's type (optionally <code>null</code>) 865 * @param regionId the primary key of the organization's region (optionally 866 <code>null</code>) 867 * @param countryId the primary key of the organization's country 868 (optionally <code>null</code>) 869 * @param params the finder params. For more information see {@link 870 com.liferay.portal.kernel.service.persistence.OrganizationFinder} 871 * @param start the lower bound of the range of organizations to return 872 * @param end the upper bound of the range of organizations to return (not 873 inclusive) 874 * @param obc the comparator to order the organizations (optionally 875 <code>null</code>) 876 * @return the matching organizations ordered by comparator <code>obc</code> 877 * @see com.liferay.portal.kernel.service.persistence.OrganizationFinder 878 */ 879 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 880 public List<Organization> search(long companyId, long parentOrganizationId, 881 java.lang.String keywords, java.lang.String type, 882 java.lang.Long regionId, java.lang.Long countryId, 883 LinkedHashMap<java.lang.String, java.lang.Object> params, int start, 884 int end, OrderByComparator<Organization> obc); 885 886 /** 887 * Returns a name ordered range of all the organizations with the type, 888 * region, and country, and whose name, street, city, and zipcode match the 889 * keywords specified for them, without using the indexer. It is preferable 890 * to use the indexed version {@link #search(long, long, String, String, 891 * String, String, String, String, String, LinkedHashMap, boolean, int, int, 892 * Sort)} instead of this method wherever possible for performance reasons. 893 * 894 * <p> 895 * Useful when paginating results. Returns a maximum of <code>end - 896 * start</code> instances. <code>start</code> and <code>end</code> are not 897 * primary keys, they are indexes in the result set. Thus, <code>0</code> 898 * refers to the first result in the set. Setting both <code>start</code> 899 * and <code>end</code> to {@link QueryUtil#ALL_POS} will return the full 900 * result set. 901 * </p> 902 * 903 * @param companyId the primary key of the organization's company 904 * @param parentOrganizationId the primary key of the organization's parent 905 * @param name the name keywords (space separated, optionally 906 <code>null</code>) 907 * @param type the organization's type (optionally <code>null</code>) 908 * @param street the street keywords (optionally <code>null</code>) 909 * @param city the city keywords (optionally <code>null</code>) 910 * @param zip the zipcode keywords (optionally <code>null</code>) 911 * @param regionId the primary key of the organization's region (optionally 912 <code>null</code>) 913 * @param countryId the primary key of the organization's country 914 (optionally <code>null</code>) 915 * @param params the finder parameters (optionally <code>null</code>). For 916 more information see {@link 917 com.liferay.portal.kernel.service.persistence.OrganizationFinder} 918 * @param andOperator whether every field must match its keywords, or just 919 one field. For example, "organizations with the name 920 'Employees' and city 'Chicago'" vs "organizations with 921 the name 'Employees' or the city 'Chicago'". 922 * @param start the lower bound of the range of organizations to return 923 * @param end the upper bound of the range of organizations to return (not 924 inclusive) 925 * @return the matching organizations ordered by name 926 * @see com.liferay.portal.kernel.service.persistence.OrganizationFinder 927 */ 928 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 929 public List<Organization> search(long companyId, long parentOrganizationId, 930 java.lang.String name, java.lang.String type, java.lang.String street, 931 java.lang.String city, java.lang.String zip, java.lang.Long regionId, 932 java.lang.Long countryId, 933 LinkedHashMap<java.lang.String, java.lang.Object> params, 934 boolean andOperator, int start, int end); 935 936 /** 937 * Returns an ordered range of all the organizations with the type, region, 938 * and country, and whose name, street, city, and zipcode match the keywords 939 * specified for them, without using the indexer. It is preferable to use 940 * the indexed version {@link #search(long, long, String, String, String, 941 * String, String, String, String, LinkedHashMap, boolean, int, int, Sort)} 942 * instead of this method wherever possible for performance reasons. 943 * 944 * <p> 945 * Useful when paginating results. Returns a maximum of <code>end - 946 * start</code> instances. <code>start</code> and <code>end</code> are not 947 * primary keys, they are indexes in the result set. Thus, <code>0</code> 948 * refers to the first result in the set. Setting both <code>start</code> 949 * and <code>end</code> to {@link QueryUtil#ALL_POS} will return the full 950 * result set. 951 * </p> 952 * 953 * @param companyId the primary key of the organization's company 954 * @param parentOrganizationId the primary key of the organization's parent 955 organization 956 * @param name the name keywords (space separated, optionally 957 <code>null</code>) 958 * @param type the organization's type (optionally <code>null</code>) 959 * @param street the street keywords (optionally <code>null</code>) 960 * @param city the city keywords (optionally <code>null</code>) 961 * @param zip the zipcode keywords (optionally <code>null</code>) 962 * @param regionId the primary key of the organization's region (optionally 963 <code>null</code>) 964 * @param countryId the primary key of the organization's country 965 (optionally <code>null</code>) 966 * @param params the finder parameters (optionally <code>null</code>). For 967 more information see {@link 968 com.liferay.portal.kernel.service.persistence.OrganizationFinder} 969 * @param andOperator whether every field must match its keywords, or just 970 one field. For example, "organizations with the name 971 'Employees' and city 'Chicago'" vs "organizations with 972 the name 'Employees' or the city 'Chicago'". 973 * @param start the lower bound of the range of organizations to return 974 * @param end the upper bound of the range of organizations to return (not 975 inclusive) 976 * @param obc the comparator to order the organizations (optionally 977 <code>null</code>) 978 * @return the matching organizations ordered by comparator <code>obc</code> 979 * @see com.liferay.portal.kernel.service.persistence.OrganizationFinder 980 */ 981 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 982 public List<Organization> search(long companyId, long parentOrganizationId, 983 java.lang.String name, java.lang.String type, java.lang.String street, 984 java.lang.String city, java.lang.String zip, java.lang.Long regionId, 985 java.lang.Long countryId, 986 LinkedHashMap<java.lang.String, java.lang.Object> params, 987 boolean andOperator, int start, int end, 988 OrderByComparator<Organization> obc); 989 990 /** 991 * Returns the number of rows matching the dynamic query. 992 * 993 * @param dynamicQuery the dynamic query 994 * @return the number of rows matching the dynamic query 995 */ 996 public long dynamicQueryCount(DynamicQuery dynamicQuery); 997 998 /** 999 * Returns the number of rows matching the dynamic query. 1000 * 1001 * @param dynamicQuery the dynamic query 1002 * @param projection the projection to apply to the query 1003 * @return the number of rows matching the dynamic query 1004 */ 1005 public long dynamicQueryCount(DynamicQuery dynamicQuery, 1006 Projection projection); 1007 1008 /** 1009 * Returns the primary key of the organization with the name. 1010 * 1011 * @param companyId the primary key of the organization's company 1012 * @param name the organization's name 1013 * @return the primary key of the organization with the name, or 1014 <code>0</code> if the organization could not be found 1015 */ 1016 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 1017 public long getOrganizationId(long companyId, java.lang.String name); 1018 1019 /** 1020 * Returns the groupIds of the groups associated with the organization. 1021 * 1022 * @param organizationId the organizationId of the organization 1023 * @return long[] the groupIds of groups associated with the organization 1024 */ 1025 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 1026 public long[] getGroupPrimaryKeys(long organizationId); 1027 1028 /** 1029 * Returns all the IDs of organizations with which the user is explicitly 1030 * associated, optionally including the IDs of organizations that the user 1031 * administers or owns. 1032 * 1033 * <p> 1034 * A user is considered to be <i>explicitly</i> associated with an 1035 * organization if his account is individually created within the 1036 * organization or if the user is later added to it. 1037 * </p> 1038 * 1039 * @param userId the primary key of the user 1040 * @param includeAdministrative whether to include the IDs of organizations 1041 that the user administers or owns, even if he's not a member of 1042 the organizations 1043 * @return the IDs of organizations with which the user is explicitly 1044 associated, optionally including the IDs of organizations that 1045 the user administers or owns 1046 */ 1047 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 1048 public long[] getUserOrganizationIds(long userId, 1049 boolean includeAdministrative) throws PortalException; 1050 1051 /** 1052 * Returns the userIds of the users associated with the organization. 1053 * 1054 * @param organizationId the organizationId of the organization 1055 * @return long[] the userIds of users associated with the organization 1056 */ 1057 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 1058 public long[] getUserPrimaryKeys(long organizationId); 1059 1060 public void addGroupOrganization(long groupId, Organization organization); 1061 1062 public void addGroupOrganization(long groupId, long organizationId); 1063 1064 public void addGroupOrganizations(long groupId, 1065 List<Organization> organizations); 1066 1067 public void addGroupOrganizations(long groupId, long[] organizationIds); 1068 1069 /** 1070 * Adds a resource for each type of permission available on the 1071 * organization. 1072 * 1073 * @param userId the primary key of the creator/owner of the organization 1074 * @param organization the organization 1075 */ 1076 public void addOrganizationResources(long userId, Organization organization) 1077 throws PortalException; 1078 1079 /** 1080 * Assigns the password policy to the organizations, removing any other 1081 * currently assigned password policies. 1082 * 1083 * @param passwordPolicyId the primary key of the password policy 1084 * @param organizationIds the primary keys of the organizations 1085 */ 1086 public void addPasswordPolicyOrganizations(long passwordPolicyId, 1087 long[] organizationIds); 1088 1089 public void addUserOrganization(long userId, Organization organization); 1090 1091 public void addUserOrganization(long userId, long organizationId); 1092 1093 public void addUserOrganizations(long userId, 1094 List<Organization> organizations); 1095 1096 public void addUserOrganizations(long userId, long[] organizationIds); 1097 1098 public void clearGroupOrganizations(long groupId); 1099 1100 public void clearUserOrganizations(long userId); 1101 1102 public void deleteGroupOrganization(long groupId, Organization organization); 1103 1104 public void deleteGroupOrganization(long groupId, long organizationId); 1105 1106 public void deleteGroupOrganizations(long groupId, 1107 List<Organization> organizations); 1108 1109 public void deleteGroupOrganizations(long groupId, long[] organizationIds); 1110 1111 /** 1112 * Deletes the organization's logo. 1113 * 1114 * @param organizationId the primary key of the organization 1115 */ 1116 public void deleteLogo(long organizationId) throws PortalException; 1117 1118 public void deleteUserOrganization(long userId, Organization organization); 1119 1120 public void deleteUserOrganization(long userId, long organizationId); 1121 1122 public void deleteUserOrganizations(long userId, 1123 List<Organization> organizations); 1124 1125 public void deleteUserOrganizations(long userId, long[] organizationIds); 1126 1127 /** 1128 * Rebuilds the organization's tree. 1129 * 1130 * <p> 1131 * Only call this method if the tree has become stale through operations 1132 * other than normal CRUD. Under normal circumstances the tree is 1133 * automatically rebuilt whenever necessary. 1134 * </p> 1135 * 1136 * @param companyId the primary key of the organization's company 1137 */ 1138 public void rebuildTree(long companyId) throws PortalException; 1139 1140 public void setGroupOrganizations(long groupId, long[] organizationIds); 1141 1142 public void setUserOrganizations(long userId, long[] organizationIds); 1143 1144 /** 1145 * Removes the organizations from the group. 1146 * 1147 * @param groupId the primary key of the group 1148 * @param organizationIds the primary keys of the organizations 1149 */ 1150 public void unsetGroupOrganizations(long groupId, long[] organizationIds); 1151 1152 /** 1153 * Removes the organizations from the password policy. 1154 * 1155 * @param passwordPolicyId the primary key of the password policy 1156 * @param organizationIds the primary keys of the organizations 1157 */ 1158 public void unsetPasswordPolicyOrganizations(long passwordPolicyId, 1159 long[] organizationIds); 1160 1161 /** 1162 * Updates the organization's asset with the new asset categories and tag 1163 * names, removing and adding asset categories and tag names as necessary. 1164 * 1165 * @param userId the primary key of the user 1166 * @param organization the organization 1167 * @param assetCategoryIds the primary keys of the asset categories 1168 * @param assetTagNames the asset tag names 1169 */ 1170 public void updateAsset(long userId, Organization organization, 1171 long[] assetCategoryIds, java.lang.String[] assetTagNames) 1172 throws PortalException; 1173 }