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, &quot;organizations with the name
574            'Employees' and city 'Chicago'&quot; vs &quot;organizations with
575            the name 'Employees' or the city 'Chicago'&quot;.
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, &quot;organizations with the name
920            'Employees' and city 'Chicago'&quot; vs &quot;organizations with
921            the name 'Employees' or the city 'Chicago'&quot;.
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, &quot;organizations with the name
971            'Employees' and city 'Chicago'&quot; vs &quot;organizations with
972            the name 'Employees' or the city 'Chicago'&quot;.
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    }