001    /**
002     * Copyright (c) 2000-2011 Liferay, Inc. All rights reserved.
003     *
004     * The contents of this file are subject to the terms of the Liferay Enterprise
005     * Subscription License ("License"). You may not use this file except in
006     * compliance with the License. You can obtain a copy of the License by
007     * contacting Liferay, Inc. See the License for the specific language governing
008     * permissions and limitations under the License, including but not limited to
009     * distribution rights of the Software.
010     *
011     *
012     *
013     */
014    
015    package com.liferay.portal.tools.samplesqlbuilder;
016    
017    import com.liferay.counter.model.Counter;
018    import com.liferay.counter.model.impl.CounterModelImpl;
019    import com.liferay.portal.kernel.util.IntegerWrapper;
020    import com.liferay.portal.kernel.util.KeyValuePair;
021    import com.liferay.portal.kernel.util.ListUtil;
022    import com.liferay.portal.kernel.util.StringUtil;
023    import com.liferay.portal.kernel.util.UnicodeProperties;
024    import com.liferay.portal.kernel.util.Validator;
025    import com.liferay.portal.kernel.xml.Document;
026    import com.liferay.portal.kernel.xml.Element;
027    import com.liferay.portal.kernel.xml.SAXReaderUtil;
028    import com.liferay.portal.model.ClassName;
029    import com.liferay.portal.model.Company;
030    import com.liferay.portal.model.Contact;
031    import com.liferay.portal.model.Group;
032    import com.liferay.portal.model.GroupConstants;
033    import com.liferay.portal.model.Layout;
034    import com.liferay.portal.model.LayoutTypePortletConstants;
035    import com.liferay.portal.model.ModelHintsUtil;
036    import com.liferay.portal.model.Permission;
037    import com.liferay.portal.model.Resource;
038    import com.liferay.portal.model.ResourceCode;
039    import com.liferay.portal.model.ResourceConstants;
040    import com.liferay.portal.model.ResourcePermission;
041    import com.liferay.portal.model.Role;
042    import com.liferay.portal.model.RoleConstants;
043    import com.liferay.portal.model.User;
044    import com.liferay.portal.model.impl.ClassNameImpl;
045    import com.liferay.portal.model.impl.CompanyImpl;
046    import com.liferay.portal.model.impl.ContactImpl;
047    import com.liferay.portal.model.impl.GroupImpl;
048    import com.liferay.portal.model.impl.LayoutImpl;
049    import com.liferay.portal.model.impl.PermissionImpl;
050    import com.liferay.portal.model.impl.ResourceCodeImpl;
051    import com.liferay.portal.model.impl.ResourceImpl;
052    import com.liferay.portal.model.impl.ResourcePermissionImpl;
053    import com.liferay.portal.model.impl.RoleImpl;
054    import com.liferay.portal.model.impl.UserImpl;
055    import com.liferay.portal.security.permission.ResourceActionsUtil;
056    import com.liferay.portlet.asset.model.AssetEntry;
057    import com.liferay.portlet.asset.model.impl.AssetEntryImpl;
058    import com.liferay.portlet.blogs.model.BlogsEntry;
059    import com.liferay.portlet.blogs.model.BlogsStatsUser;
060    import com.liferay.portlet.blogs.model.impl.BlogsEntryImpl;
061    import com.liferay.portlet.blogs.model.impl.BlogsStatsUserImpl;
062    import com.liferay.portlet.documentlibrary.model.DLFileEntry;
063    import com.liferay.portlet.documentlibrary.model.DLFileEntryMetadata;
064    import com.liferay.portlet.documentlibrary.model.DLFileRank;
065    import com.liferay.portlet.documentlibrary.model.DLFileVersion;
066    import com.liferay.portlet.documentlibrary.model.DLFolder;
067    import com.liferay.portlet.documentlibrary.model.DLSync;
068    import com.liferay.portlet.documentlibrary.model.DLSyncConstants;
069    import com.liferay.portlet.documentlibrary.model.impl.DLFileEntryImpl;
070    import com.liferay.portlet.documentlibrary.model.impl.DLFileEntryMetadataImpl;
071    import com.liferay.portlet.documentlibrary.model.impl.DLFileRankImpl;
072    import com.liferay.portlet.documentlibrary.model.impl.DLFileVersionImpl;
073    import com.liferay.portlet.documentlibrary.model.impl.DLFolderImpl;
074    import com.liferay.portlet.documentlibrary.model.impl.DLSyncImpl;
075    import com.liferay.portlet.dynamicdatamapping.model.DDMContent;
076    import com.liferay.portlet.dynamicdatamapping.model.DDMStorageLink;
077    import com.liferay.portlet.dynamicdatamapping.model.DDMStructure;
078    import com.liferay.portlet.dynamicdatamapping.model.DDMStructureLink;
079    import com.liferay.portlet.dynamicdatamapping.model.impl.DDMContentImpl;
080    import com.liferay.portlet.dynamicdatamapping.model.impl.DDMStorageLinkImpl;
081    import com.liferay.portlet.dynamicdatamapping.model.impl.DDMStructureImpl;
082    import com.liferay.portlet.dynamicdatamapping.model.impl.DDMStructureLinkImpl;
083    import com.liferay.portlet.messageboards.model.MBCategory;
084    import com.liferay.portlet.messageboards.model.MBCategoryConstants;
085    import com.liferay.portlet.messageboards.model.MBDiscussion;
086    import com.liferay.portlet.messageboards.model.MBMessage;
087    import com.liferay.portlet.messageboards.model.MBStatsUser;
088    import com.liferay.portlet.messageboards.model.MBThread;
089    import com.liferay.portlet.messageboards.model.impl.MBCategoryImpl;
090    import com.liferay.portlet.messageboards.model.impl.MBDiscussionImpl;
091    import com.liferay.portlet.messageboards.model.impl.MBMessageImpl;
092    import com.liferay.portlet.messageboards.model.impl.MBStatsUserImpl;
093    import com.liferay.portlet.messageboards.model.impl.MBThreadImpl;
094    import com.liferay.portlet.social.model.SocialActivity;
095    import com.liferay.portlet.social.model.impl.SocialActivityImpl;
096    import com.liferay.portlet.wiki.model.WikiNode;
097    import com.liferay.portlet.wiki.model.WikiPage;
098    import com.liferay.portlet.wiki.model.impl.WikiNodeImpl;
099    import com.liferay.portlet.wiki.model.impl.WikiPageImpl;
100    import com.liferay.util.SimpleCounter;
101    
102    import java.io.File;
103    
104    import java.util.ArrayList;
105    import java.util.HashMap;
106    import java.util.List;
107    import java.util.Map;
108    
109    /**
110     * @author Brian Wing Shun Chan
111     */
112    public class DataFactory {
113    
114            public DataFactory(
115                    String baseDir, int maxGroupsCount, int maxUserToGroupCount,
116                    SimpleCounter counter, SimpleCounter permissionCounter,
117                    SimpleCounter resourceCounter, SimpleCounter resourceCodeCounter,
118                    SimpleCounter resourcePermissionCounter,
119                    SimpleCounter socialActivityCounter) {
120    
121                    try {
122                            _baseDir = baseDir;
123                            _maxGroupsCount = maxGroupsCount;
124                            _maxUserToGroupCount = maxUserToGroupCount;
125    
126                            _counter = counter;
127                            _permissionCounter = permissionCounter;
128                            _resourceCounter = resourceCounter;
129                            _resourceCodeCounter = resourceCodeCounter;
130                            _resourcePermissionCounter = resourcePermissionCounter;
131                            _socialActivityCounter = socialActivityCounter;
132    
133                            initClassNames();
134                            initCompany();
135                            initDefaultUser();
136                            initGroups();
137                            initResourceCodes();
138                            initRoles();
139                            initUserNames();
140                    }
141                    catch (Exception e) {
142                            e.printStackTrace();
143                    }
144            }
145    
146            public AssetEntry addAssetEntry(
147                            long groupId, long userId, long classNameId, long classPK,
148                            boolean visible, String mimeType, String title)
149                    throws Exception {
150    
151                    AssetEntry assetEntry = new AssetEntryImpl();
152    
153                    assetEntry.setGroupId(groupId);
154                    assetEntry.setUserId(userId);
155                    assetEntry.setClassNameId(classNameId);
156                    assetEntry.setClassPK(classPK);
157                    assetEntry.setVisible(visible);
158                    assetEntry.setMimeType(mimeType);
159                    assetEntry.setTitle(title);
160    
161                    return assetEntry;
162            }
163    
164            public BlogsEntry addBlogsEntry(
165                            long groupId, long userId, String title, String urlTitle,
166                            String content)
167                    throws Exception {
168    
169                    BlogsEntry blogsEntry = new BlogsEntryImpl();
170    
171                    blogsEntry.setEntryId(_counter.get());
172                    blogsEntry.setGroupId(groupId);
173                    blogsEntry.setUserId(userId);
174                    blogsEntry.setTitle(title);
175                    blogsEntry.setUrlTitle(urlTitle);
176                    blogsEntry.setContent(content);
177    
178                    return blogsEntry;
179            }
180    
181            public BlogsStatsUser addBlogsStatsUser(long groupId, long userId)
182                    throws Exception {
183    
184                    BlogsStatsUser blogsStatsUser = new BlogsStatsUserImpl();
185    
186                    blogsStatsUser.setGroupId(groupId);
187                    blogsStatsUser.setUserId(userId);
188    
189                    return blogsStatsUser;
190            }
191    
192            public Contact addContact(String firstName, String lastName)
193                    throws Exception {
194    
195                    Contact contact = new ContactImpl();
196    
197                    contact.setContactId(_counter.get());
198                    contact.setAccountId(_company.getAccountId());
199                    contact.setFirstName(firstName);
200                    contact.setLastName(lastName);
201    
202                    return contact;
203            }
204    
205            public DDMContent addDDMContent(long groupId, long companyId, long userId)
206                    throws Exception {
207    
208                    DDMContent ddmContent = new DDMContentImpl();
209    
210                    ddmContent.setContentId(_counter.get());
211                    ddmContent.setGroupId(groupId);
212                    ddmContent.setCompanyId(companyId);
213                    ddmContent.setUserId(userId);
214    
215                    return ddmContent;
216            }
217    
218            public DDMStorageLink addDDMStorageLink(
219                            long classNameId, long classPK, long structureId)
220                    throws Exception {
221    
222                    DDMStorageLink ddmStorageLink = new DDMStorageLinkImpl();
223    
224                    ddmStorageLink.setStorageLinkId(_counter.get());
225                    ddmStorageLink.setClassNameId(classNameId);
226                    ddmStorageLink.setClassPK(classPK);
227                    ddmStorageLink.setStructureId(structureId);
228    
229                    return ddmStorageLink;
230            }
231    
232            public DDMStructure addDDMStructure(
233                            long groupId, long companyId, long userId, long classNameId)
234                    throws Exception {
235    
236                    DDMStructure ddmStructure = new DDMStructureImpl();
237    
238                    ddmStructure.setStructureId(_counter.get());
239                    ddmStructure.setGroupId(groupId);
240                    ddmStructure.setCompanyId(companyId);
241                    ddmStructure.setUserId(userId);
242                    ddmStructure.setClassNameId(classNameId);
243    
244                    return ddmStructure;
245            }
246    
247            public DDMStructureLink addDDMStructureLink(long classPK, long structureId)
248                    throws Exception {
249    
250                    DDMStructureLink ddmStructureLink = new DDMStructureLinkImpl();
251    
252                    ddmStructureLink.setStructureLinkId(_counter.get());
253                    ddmStructureLink.setClassNameId(_dlFileEntryClassName.getClassNameId());
254                    ddmStructureLink.setClassPK(classPK);
255                    ddmStructureLink.setStructureId(structureId);
256    
257                    return ddmStructureLink;
258            }
259    
260            public DLFileEntry addDlFileEntry(
261                            long groupId, long companyId, long userId, long folderId,
262                            String extension, String mimeType, String name, String title,
263                            String description)
264                    throws Exception {
265    
266                    DLFileEntry dlFileEntry = new DLFileEntryImpl();
267    
268                    dlFileEntry.setFileEntryId(_counter.get());
269                    dlFileEntry.setGroupId(groupId);
270                    dlFileEntry.setCompanyId(companyId);
271                    dlFileEntry.setUserId(userId);
272                    dlFileEntry.setRepositoryId(groupId);
273                    dlFileEntry.setFolderId(folderId);
274                    dlFileEntry.setName(name);
275                    dlFileEntry.setExtension(extension);
276                    dlFileEntry.setMimeType(mimeType);
277                    dlFileEntry.setTitle(title);
278                    dlFileEntry.setDescription(description);
279                    dlFileEntry.setSmallImageId(_counter.get());
280                    dlFileEntry.setLargeImageId(_counter.get());
281    
282                    return dlFileEntry;
283            }
284    
285            public DLFileEntryMetadata addDLFileEntryMetadata(
286                            long ddmStorageId, long ddmStructureId, long fileEntryId,
287                            long fileVersionId)
288                    throws Exception {
289    
290                    DLFileEntryMetadata dlFileEntryMetadata = new DLFileEntryMetadataImpl();
291    
292                    dlFileEntryMetadata.setFileEntryMetadataId(_counter.get());
293                    dlFileEntryMetadata.setDDMStorageId(ddmStorageId);
294                    dlFileEntryMetadata.setDDMStructureId(ddmStructureId);
295                    dlFileEntryMetadata.setFileEntryId(fileEntryId);
296                    dlFileEntryMetadata.setFileVersionId(fileVersionId);
297    
298                    return dlFileEntryMetadata;
299            }
300    
301            public DLFileRank addDLFileRank(
302                            long groupId, long companyId, long userId, long fileEntryId)
303                    throws Exception {
304    
305                    DLFileRank dlFileRank = new DLFileRankImpl();
306    
307                    dlFileRank.setFileRankId(_counter.get());
308                    dlFileRank.setGroupId(groupId);
309                    dlFileRank.setCompanyId(companyId);
310                    dlFileRank.setUserId(userId);
311                    dlFileRank.setFileEntryId(fileEntryId);
312    
313                    return dlFileRank;
314            }
315    
316            public DLFileVersion addDLFileVersion(DLFileEntry dlFileEntry)
317                    throws Exception {
318    
319                    DLFileVersion dlFileVersion = new DLFileVersionImpl();
320    
321                    dlFileVersion.setFileVersionId(_counter.get());
322                    dlFileVersion.setGroupId(dlFileEntry.getGroupId());
323                    dlFileVersion.setCompanyId(dlFileEntry.getCompanyId());
324                    dlFileVersion.setUserId(dlFileEntry.getUserId());
325                    dlFileVersion.setRepositoryId(dlFileEntry.getRepositoryId());
326                    dlFileVersion.setFileEntryId(dlFileEntry.getFileEntryId());
327                    dlFileVersion.setExtension(dlFileEntry.getExtension());
328                    dlFileVersion.setMimeType(dlFileEntry.getMimeType());
329                    dlFileVersion.setTitle(dlFileEntry.getTitle());
330                    dlFileVersion.setDescription(dlFileEntry.getDescription());
331                    dlFileVersion.setSize(dlFileEntry.getSize());
332    
333                    return dlFileVersion;
334            }
335    
336            public DLFolder addDLFolder(
337                            long groupId, long companyId, long userId, long parentFolderId,
338                            String name, String description)
339                    throws Exception {
340    
341                    DLFolder dlFolder = new DLFolderImpl();
342    
343                    dlFolder.setFolderId(_counter.get());
344                    dlFolder.setGroupId(groupId);
345                    dlFolder.setCompanyId(companyId);
346                    dlFolder.setUserId(userId);
347                    dlFolder.setRepositoryId(groupId);
348                    dlFolder.setParentFolderId(parentFolderId);
349                    dlFolder.setName(name);
350                    dlFolder.setDescription(description);
351    
352                    return dlFolder;
353            }
354    
355            public DLSync addDLSync(
356                            long companyId, long fileId, long repositoryId, long parentFolderId,
357                            boolean typeFolder)
358                    throws Exception {
359    
360                    DLSync dlSync = new DLSyncImpl();
361    
362                    dlSync.setSyncId(_counter.get());
363                    dlSync.setCompanyId(companyId);
364                    dlSync.setFileId(fileId);
365                    dlSync.setRepositoryId(repositoryId);
366                    dlSync.setParentFolderId(parentFolderId);
367                    dlSync.setEvent(DLSyncConstants.EVENT_ADD);
368    
369                    if (typeFolder) {
370                            dlSync.setType(DLSyncConstants.TYPE_FOLDER);
371                    }
372                    else {
373                            dlSync.setType(DLSyncConstants.TYPE_FILE);
374                    }
375    
376                    return dlSync;
377            }
378    
379            public Group addGroup(
380                            long groupId, long classNameId, long classPK, String name,
381                            String friendlyURL, boolean site)
382                    throws Exception {
383    
384                    Group group = new GroupImpl();
385    
386                    group.setGroupId(groupId);
387                    group.setClassNameId(classNameId);
388                    group.setClassPK(classPK);
389                    group.setName(name);
390                    group.setFriendlyURL(friendlyURL);
391                    group.setSite(site);
392    
393                    return group;
394            }
395    
396            public Layout addLayout(
397                            int layoutId, String name, String friendlyURL, String column1,
398                            String column2)
399                    throws Exception {
400    
401                    Layout layout = new LayoutImpl();
402    
403                    layout.setPlid(_counter.get());
404                    layout.setPrivateLayout(false);
405                    layout.setLayoutId(layoutId);
406                    layout.setName(name);
407                    layout.setFriendlyURL(friendlyURL);
408    
409                    UnicodeProperties typeSettingsProperties = new UnicodeProperties(true);
410    
411                    typeSettingsProperties.setProperty(
412                            LayoutTypePortletConstants.LAYOUT_TEMPLATE_ID, "2_columns_ii");
413                    typeSettingsProperties.setProperty("column-1", column1);
414                    typeSettingsProperties.setProperty("column-2", column2);
415    
416                    String typeSettings = StringUtil.replace(
417                            typeSettingsProperties.toString(), "\n", "\\n");
418    
419                    layout.setTypeSettings(typeSettings);
420    
421                    return layout;
422            }
423    
424            public MBCategory addMBCategory(
425                            long categoryId, long groupId, long companyId, long userId,
426                            String name, String description, int threadCount, int messageCount)
427                    throws Exception {
428    
429                    MBCategory mbCategory = new MBCategoryImpl();
430    
431                    mbCategory.setCategoryId(categoryId);
432                    mbCategory.setGroupId(groupId);
433                    mbCategory.setCompanyId(companyId);
434                    mbCategory.setUserId(userId);
435                    mbCategory.setName(name);
436                    mbCategory.setDescription(description);
437                    mbCategory.setDisplayStyle(MBCategoryConstants.DEFAULT_DISPLAY_STYLE);
438                    mbCategory.setThreadCount(threadCount);
439                    mbCategory.setMessageCount(messageCount);
440    
441                    return mbCategory;
442            }
443    
444            public MBDiscussion addMBDiscussion(
445                            long classNameId, long classPK, long threadId)
446                    throws Exception {
447    
448                    MBDiscussion mbDiscussion = new MBDiscussionImpl();
449    
450                    mbDiscussion.setDiscussionId(_counter.get());
451                    mbDiscussion.setClassNameId(classNameId);
452                    mbDiscussion.setClassPK(classPK);
453                    mbDiscussion.setThreadId(threadId);
454    
455                    return mbDiscussion;
456            }
457    
458            public MBMessage addMBMessage(
459                            long messageId, long groupId, long userId, long classNameId,
460                            long classPK, long categoryId, long threadId, long rootMessageId,
461                            long parentMessageId, String subject, String body)
462                    throws Exception {
463    
464                    MBMessage mbMessage = new MBMessageImpl();
465    
466                    mbMessage.setMessageId(messageId);
467                    mbMessage.setGroupId(groupId);
468                    mbMessage.setUserId(userId);
469                    mbMessage.setClassNameId(classNameId);
470                    mbMessage.setClassPK(classPK);
471                    mbMessage.setCategoryId(categoryId);
472                    mbMessage.setThreadId(threadId);
473                    mbMessage.setRootMessageId(rootMessageId);
474                    mbMessage.setParentMessageId(parentMessageId);
475                    mbMessage.setSubject(subject);
476                    mbMessage.setBody(body);
477    
478                    return mbMessage;
479            }
480    
481            public MBStatsUser addMBStatsUser(long groupId, long userId)
482                    throws Exception {
483    
484                    MBStatsUser mbStatsUser = new MBStatsUserImpl();
485    
486                    mbStatsUser.setGroupId(groupId);
487                    mbStatsUser.setUserId(userId);
488    
489                    return mbStatsUser;
490            }
491    
492            public MBThread addMBThread(
493                            long threadId, long groupId, long companyId, long categoryId,
494                            long rootMessageId, int messageCount, long lastPostByUserId)
495                    throws Exception {
496    
497                    MBThread mbThread = new MBThreadImpl();
498    
499                    mbThread.setThreadId(threadId);
500                    mbThread.setGroupId(groupId);
501                    mbThread.setCompanyId(companyId);
502                    mbThread.setCategoryId(categoryId);
503                    mbThread.setRootMessageId(rootMessageId);
504                    mbThread.setRootMessageUserId(lastPostByUserId);
505                    mbThread.setMessageCount(messageCount);
506                    mbThread.setLastPostByUserId(lastPostByUserId);
507    
508                    return mbThread;
509            }
510    
511            public List<Permission> addPermissions(Resource resource) throws Exception {
512                    List<Permission> permissions = new ArrayList<Permission>();
513    
514                    String name = _individualResourceNames.get(resource.getCodeId());
515    
516                    List<String> actions = ResourceActionsUtil.getModelResourceActions(
517                            name);
518    
519                    for (String action : actions) {
520                            Permission permission = new PermissionImpl();
521    
522                            permission.setPermissionId(_permissionCounter.get());
523                            permission.setCompanyId(_company.getCompanyId());
524                            permission.setActionId(action);
525                            permission.setResourceId(resource.getResourceId());
526    
527                            permissions.add(permission);
528                    }
529    
530                    return permissions;
531            }
532    
533            public Resource addResource(String name, String primKey) throws Exception {
534                    Long codeId = _individualResourceCodeIds.get(name);
535    
536                    Resource resource = new ResourceImpl();
537    
538                    resource.setResourceId(_resourceCounter.get());
539                    resource.setCodeId(codeId);
540                    resource.setPrimKey(primKey);
541    
542                    return resource;
543            }
544    
545            public List<ResourcePermission> addResourcePermission(
546                            long companyId, String name, String primKey)
547                    throws Exception {
548    
549                    List<ResourcePermission> resourcePermissions =
550                            new ArrayList<ResourcePermission>(2);
551    
552                    ResourcePermission resourcePermission = new ResourcePermissionImpl();
553    
554                    resourcePermission.setResourcePermissionId(
555                            _resourcePermissionCounter.get());
556                    resourcePermission.setCompanyId(companyId);
557                    resourcePermission.setName(name);
558                    resourcePermission.setScope(ResourceConstants.SCOPE_INDIVIDUAL);
559                    resourcePermission.setPrimKey(primKey);
560                    resourcePermission.setRoleId(_ownerRole.getRoleId());
561                    resourcePermission.setOwnerId(_defaultUser.getUserId());
562                    resourcePermission.setActionIds(1);
563    
564                    resourcePermissions.add(resourcePermission);
565    
566                    resourcePermission = new ResourcePermissionImpl();
567    
568                    resourcePermission.setResourcePermissionId(
569                            _resourcePermissionCounter.get());
570                    resourcePermission.setCompanyId(companyId);
571                    resourcePermission.setName(name);
572                    resourcePermission.setScope(ResourceConstants.SCOPE_INDIVIDUAL);
573                    resourcePermission.setPrimKey(primKey);
574                    resourcePermission.setRoleId(_guestRole.getRoleId());
575                    resourcePermission.setOwnerId(0);
576                    resourcePermission.setActionIds(1);
577    
578                    resourcePermissions.add(resourcePermission);
579    
580                    return resourcePermissions;
581            }
582    
583            public List<KeyValuePair> addRolesPermissions(
584                            Resource resource, List<Permission> permissions, Role memberRole)
585                    throws Exception {
586    
587                    List<KeyValuePair> rolesPermissions = new ArrayList<KeyValuePair>();
588    
589                    for (Permission permission : permissions) {
590                            KeyValuePair kvp = new KeyValuePair();
591    
592                            kvp.setKey(String.valueOf(_ownerRole.getRoleId()));
593                            kvp.setValue(String.valueOf(permission.getPermissionId()));
594    
595                            rolesPermissions.add(kvp);
596                    }
597    
598                    String name = _individualResourceNames.get(resource.getCodeId());
599    
600                    if (memberRole != null) {
601                            List<String> groupDefaultActions =
602                                    ResourceActionsUtil.getModelResourceGroupDefaultActions(name);
603    
604                            for (Permission permission : permissions) {
605                                    if (!groupDefaultActions.contains(permission.getActionId())) {
606                                            continue;
607                                    }
608    
609                                    KeyValuePair kvp = new KeyValuePair();
610    
611                                    kvp.setKey(String.valueOf(memberRole.getRoleId()));
612                                    kvp.setValue(String.valueOf(permission.getPermissionId()));
613    
614                                    rolesPermissions.add(kvp);
615                            }
616                    }
617    
618                    List<String> guestDefaultactions =
619                            ResourceActionsUtil.getModelResourceGuestDefaultActions(name);
620    
621                    for (Permission permission : permissions) {
622                            if (!guestDefaultactions.contains(permission.getActionId())) {
623                                    continue;
624                            }
625    
626                            KeyValuePair kvp = new KeyValuePair();
627    
628                            kvp.setKey(String.valueOf(_guestRole.getRoleId()));
629                            kvp.setValue(String.valueOf(permission.getPermissionId()));
630    
631                            rolesPermissions.add(kvp);
632                    }
633    
634                    return rolesPermissions;
635            }
636    
637            public SocialActivity addSocialActivity(
638                            long groupId, long companyId, long userId, long classNameId,
639                            long classPK)
640                    throws Exception {
641    
642                    SocialActivity socialActivity = new SocialActivityImpl();
643    
644                    socialActivity.setActivityId(_socialActivityCounter.get());
645                    socialActivity.setGroupId(groupId);
646                    socialActivity.setCompanyId(companyId);
647                    socialActivity.setUserId(userId);
648                    socialActivity.setClassNameId(classNameId);
649                    socialActivity.setClassPK(classPK);
650    
651                    return socialActivity;
652            }
653    
654            public User addUser(boolean defaultUser, String screenName)
655                    throws Exception {
656    
657                    User user = new UserImpl();
658    
659                    user.setUserId(_counter.get());
660                    user.setDefaultUser(defaultUser);
661    
662                    if (Validator.isNull(screenName)) {
663                            screenName = String.valueOf(user.getUserId());
664                    }
665    
666                    user.setScreenName(screenName);
667    
668                    String emailAddress = screenName + "@liferay.com";
669    
670                    user.setEmailAddress(emailAddress);
671    
672                    return user;
673            }
674    
675            public List<Long> addUserToGroupIds(long groupId) {
676                    List<Long> groupIds = new ArrayList<Long>(_maxUserToGroupCount + 1);
677    
678                    groupIds.add(_guestGroup.getGroupId());
679    
680                    if ((groupId + _maxUserToGroupCount) > _maxGroupsCount) {
681                            groupId = groupId - _maxUserToGroupCount + 1;
682                    }
683    
684                    for (int i = 0; i < _maxUserToGroupCount; i++) {
685                            groupIds.add(groupId + i);
686                    }
687    
688                    return groupIds;
689            }
690    
691            public WikiNode addWikiNode(
692                            long groupId, long userId, String name, String description)
693                    throws Exception {
694    
695                    WikiNode wikiNode = new WikiNodeImpl();
696    
697                    wikiNode.setNodeId(_counter.get());
698                    wikiNode.setGroupId(groupId);
699                    wikiNode.setUserId(userId);
700                    wikiNode.setName(name);
701                    wikiNode.setDescription(description);
702    
703                    return wikiNode;
704            }
705    
706            public WikiPage addWikiPage(
707                            long groupId, long userId, long nodeId, String title,
708                            double version, String content, boolean head)
709                    throws Exception {
710    
711                    WikiPage wikiPage = new WikiPageImpl();
712    
713                    wikiPage.setPageId(_counter.get());
714                    wikiPage.setResourcePrimKey(_counter.get());
715                    wikiPage.setGroupId(groupId);
716                    wikiPage.setUserId(userId);
717                    wikiPage.setNodeId(nodeId);
718                    wikiPage.setTitle(title);
719                    wikiPage.setVersion(version);
720                    wikiPage.setContent(content);
721                    wikiPage.setHead(head);
722    
723                    return wikiPage;
724            }
725    
726            public Role getAdministratorRole() {
727                    return _administratorRole;
728            }
729    
730            public ClassName getBlogsEntryClassName() {
731                    return _blogsEntryClassName;
732            }
733    
734            public List<ClassName> getClassNames() {
735                    return _classNames;
736            }
737    
738            public Company getCompany() {
739                    return _company;
740            }
741    
742            public List<CounterModelImpl> getCounters() {
743                    return _counters;
744            }
745    
746            public ClassName getDDMContentClassName() {
747                    return _ddmContentClassName;
748            }
749    
750            public User getDefaultUser() {
751                    return _defaultUser;
752            }
753    
754            public ClassName getDLFileEntryClassName() {
755                    return _dlFileEntryClassName;
756            }
757    
758            public ClassName getGroupClassName() {
759                    return _groupClassName;
760            }
761    
762            public List<Group> getGroups() {
763                    return _groups;
764            }
765    
766            public Group getGuestGroup() {
767                    return _guestGroup;
768            }
769    
770            public Role getGuestRole() {
771                    return _guestRole;
772            }
773    
774            public ClassName getMBMessageClassName() {
775                    return _mbMessageClassName;
776            }
777    
778            public Role getOrganizationAdministratorRole() {
779                    return _organizationAdministratorRole;
780            }
781    
782            public Role getOrganizationOwnerRole() {
783                    return _organizationOwnerRole;
784            }
785    
786            public Role getOrganizationUserRole() {
787                    return _organizationUserRole;
788            }
789    
790            public Role getPowerUserRole() {
791                    return _powerUserRole;
792            }
793    
794            public List<ResourceCode> getResourceCodes() {
795                    return _resourceCodes;
796            }
797    
798            public ClassName getRoleClassName() {
799                    return _roleClassName;
800            }
801    
802            public List<Role> getRoles() {
803                    return _roles;
804            }
805    
806            public Role getSiteAdministratorRole() {
807                    return _siteAdministratorRole;
808            }
809    
810            public Role getSiteMemberRole() {
811                    return _siteMemberRole;
812            }
813    
814            public Role getSiteOwnerRole() {
815                    return _siteOwnerRole;
816            }
817    
818            public ClassName getUserClassName() {
819                    return _userClassName;
820            }
821    
822            public Object[] getUserNames() {
823                    return _userNames;
824            }
825    
826            public Role getUserRole() {
827                    return _userRole;
828            }
829    
830            public ClassName getWikiPageClassName() {
831                    return _wikiPageClassName;
832            }
833    
834            public void initClassNames() throws Exception {
835                    if (_classNames != null) {
836                            return;
837                    }
838    
839                    _classNames = new ArrayList<ClassName>();
840    
841                    List<String> models = ModelHintsUtil.getModels();
842    
843                    for (String model : models) {
844                            ClassName className = new ClassNameImpl();
845    
846                            className.setClassNameId(_counter.get());
847                            className.setValue(model);
848    
849                            _classNames.add(className);
850    
851                            if (model.equals(BlogsEntry.class.getName())) {
852                                    _blogsEntryClassName = className;
853                            }
854                            else if (model.equals(DDMContent.class.getName())) {
855                                    _ddmContentClassName = className;
856                            }
857                            else if (model.equals(DLFileEntry.class.getName())) {
858                                    _dlFileEntryClassName = className;
859                            }
860                            else if (model.equals(Group.class.getName())) {
861                                    _groupClassName = className;
862                            }
863                            else if (model.equals(MBMessage.class.getName())) {
864                                    _mbMessageClassName = className;
865                            }
866                            else if (model.equals(Role.class.getName())) {
867                                    _roleClassName = className;
868                            }
869                            else if (model.equals(User.class.getName())) {
870                                    _userClassName = className;
871                            }
872                            else if (model.equals(WikiPage.class.getName())) {
873                                    _wikiPageClassName = className;
874                            }
875                    }
876            }
877    
878            public void initCompany() throws Exception {
879                    _company = new CompanyImpl();
880    
881                    _company.setCompanyId(_counter.get());
882                    _company.setAccountId(_counter.get());
883            }
884    
885            public void initCounters() throws Exception {
886                    if (_counters != null) {
887                            return;
888                    }
889    
890                    _counters = new ArrayList<CounterModelImpl>();
891    
892                    // Counter
893    
894                    CounterModelImpl counter = new CounterModelImpl();
895    
896                    counter.setName(Counter.class.getName());
897                    counter.setCurrentId(_counter.get());
898    
899                    _counters.add(counter);
900    
901                    // Permission
902    
903                    counter = new CounterModelImpl();
904    
905                    counter.setName(Permission.class.getName());
906                    counter.setCurrentId(_permissionCounter.get());
907    
908                    _counters.add(counter);
909    
910                    // Resource
911    
912                    counter = new CounterModelImpl();
913    
914                    counter.setName(Resource.class.getName());
915                    counter.setCurrentId(_resourceCounter.get());
916    
917                    _counters.add(counter);
918    
919                    // ResourceCode
920    
921                    counter = new CounterModelImpl();
922    
923                    counter.setName(ResourceCode.class.getName());
924                    counter.setCurrentId(_resourceCodeCounter.get());
925    
926                    _counters.add(counter);
927    
928                    // ResourcePermission
929    
930                    counter = new CounterModelImpl();
931    
932                    counter.setName(ResourcePermission.class.getName());
933                    counter.setCurrentId(_resourcePermissionCounter.get());
934    
935                    _counters.add(counter);
936    
937                    // SocialActivity
938    
939                    counter = new CounterModelImpl();
940    
941                    counter.setName(SocialActivity.class.getName());
942                    counter.setCurrentId(_socialActivityCounter.get());
943    
944                    _counters.add(counter);
945            }
946    
947            public void initDefaultUser() throws Exception {
948                    _defaultUser = new UserImpl();
949    
950                    _defaultUser.setUserId(_counter.get());
951            }
952    
953            public void initGroups() throws Exception {
954                    if (_groups != null) {
955                            return;
956                    }
957    
958                    _groups = new ArrayList<Group>();
959    
960                    // Guest
961    
962                    Group group = new GroupImpl();
963    
964                    group.setGroupId(_counter.get());
965                    group.setClassNameId(_groupClassName.getClassNameId());
966                    group.setClassPK(group.getGroupId());
967                    group.setName(GroupConstants.GUEST);
968                    group.setFriendlyURL("/guest");
969                    group.setSite(true);
970    
971                    _groups.add(group);
972    
973                    _guestGroup = group;
974            }
975    
976            public void initResourceCodes() throws Exception {
977                    if (_resourceCodes != null) {
978                            return;
979                    }
980    
981                    _resourceCodes = new ArrayList<ResourceCode>();
982    
983                    _individualResourceCodeIds = new HashMap<String, Long>();
984                    _individualResourceNames = new HashMap<Long, String>();
985    
986                    List<String> models = ModelHintsUtil.getModels();
987    
988                    for (String model : models) {
989                            initResourceCodes(model);
990                    }
991    
992                    Document document = SAXReaderUtil.read(
993                            new File(
994                                    _baseDir, "../portal-web/docroot/WEB-INF/portlet-custom.xml"),
995                            false);
996    
997                    Element rootElement = document.getRootElement();
998    
999                    List<Element> portletElements = rootElement.elements("portlet");
1000    
1001                    for (Element portletElement : portletElements) {
1002                            String portletName = portletElement.elementText("portlet-name");
1003    
1004                            initResourceCodes(portletName);
1005                    }
1006            }
1007    
1008            public void initResourceCodes(String name) throws Exception {
1009    
1010                    // Company
1011    
1012                    ResourceCode resourceCode = newResourceCode();
1013    
1014                    resourceCode.setName(name);
1015                    resourceCode.setScope(ResourceConstants.SCOPE_COMPANY);
1016    
1017                    _resourceCodes.add(resourceCode);
1018    
1019                    // Group
1020    
1021                    resourceCode = newResourceCode();
1022    
1023                    resourceCode.setName(name);
1024                    resourceCode.setScope(ResourceConstants.SCOPE_GROUP);
1025    
1026                    _resourceCodes.add(resourceCode);
1027    
1028                    // Group template
1029    
1030                    resourceCode = newResourceCode();
1031    
1032                    resourceCode.setName(name);
1033                    resourceCode.setScope(ResourceConstants.SCOPE_GROUP_TEMPLATE);
1034    
1035                    _resourceCodes.add(resourceCode);
1036    
1037                    // Individual
1038    
1039                    resourceCode = newResourceCode();
1040    
1041                    resourceCode.setName(name);
1042                    resourceCode.setScope(ResourceConstants.SCOPE_INDIVIDUAL);
1043    
1044                    _resourceCodes.add(resourceCode);
1045    
1046                    _individualResourceCodeIds.put(name, resourceCode.getCodeId());
1047                    _individualResourceNames.put(resourceCode.getCodeId(), name);
1048            }
1049    
1050            public void initRoles() throws Exception {
1051                    if (_roles != null) {
1052                            return;
1053                    }
1054    
1055                    _roles = new ArrayList<Role>();
1056    
1057                    // Administrator
1058    
1059                    Role role = newRole();
1060    
1061                    role.setName(RoleConstants.ADMINISTRATOR);
1062                    role.setType(RoleConstants.TYPE_REGULAR);
1063    
1064                    _roles.add(role);
1065    
1066                    _administratorRole = role;
1067    
1068                    // Guest
1069    
1070                    role = newRole();
1071    
1072                    role.setName(RoleConstants.GUEST);
1073                    role.setType(RoleConstants.TYPE_REGULAR);
1074    
1075                    _roles.add(role);
1076    
1077                    _guestRole = role;
1078    
1079                    // Organization Administrator
1080    
1081                    role = newRole();
1082    
1083                    role.setName(RoleConstants.ORGANIZATION_ADMINISTRATOR);
1084                    role.setType(RoleConstants.TYPE_ORGANIZATION);
1085    
1086                    _roles.add(role);
1087    
1088                    _organizationAdministratorRole = role;
1089    
1090                    // Organization Owner
1091    
1092                    role = newRole();
1093    
1094                    role.setName(RoleConstants.ORGANIZATION_OWNER);
1095                    role.setType(RoleConstants.TYPE_ORGANIZATION);
1096    
1097                    _roles.add(role);
1098    
1099                    _organizationOwnerRole = role;
1100    
1101                    // Organization User
1102    
1103                    role = newRole();
1104    
1105                    role.setName(RoleConstants.ORGANIZATION_USER);
1106                    role.setType(RoleConstants.TYPE_ORGANIZATION);
1107    
1108                    _roles.add(role);
1109    
1110                    _organizationUserRole = role;
1111    
1112                    // Owner
1113    
1114                    role = newRole();
1115    
1116                    role.setName(RoleConstants.OWNER);
1117                    role.setType(RoleConstants.TYPE_REGULAR);
1118    
1119                    _roles.add(role);
1120    
1121                    _ownerRole = role;
1122    
1123                    // Power User
1124    
1125                    role = newRole();
1126    
1127                    role.setName(RoleConstants.POWER_USER);
1128                    role.setType(RoleConstants.TYPE_REGULAR);
1129    
1130                    _roles.add(role);
1131    
1132                    _powerUserRole = role;
1133    
1134                    // Site Administrator
1135    
1136                    role = newRole();
1137    
1138                    role.setName(RoleConstants.SITE_ADMINISTRATOR);
1139                    role.setType(RoleConstants.TYPE_SITE);
1140    
1141                    _roles.add(role);
1142    
1143                    _siteAdministratorRole = role;
1144    
1145                    // Site Member
1146    
1147                    role = newRole();
1148    
1149                    role.setName(RoleConstants.SITE_MEMBER);
1150                    role.setType(RoleConstants.TYPE_SITE);
1151    
1152                    _roles.add(role);
1153    
1154                    _siteMemberRole = role;
1155    
1156                    // Site Owner
1157    
1158                    role = newRole();
1159    
1160                    role.setName(RoleConstants.SITE_OWNER);
1161                    role.setType(RoleConstants.TYPE_SITE);
1162    
1163                    _roles.add(role);
1164    
1165                    _siteOwnerRole = role;
1166    
1167                    // User
1168    
1169                    role = newRole();
1170    
1171                    role.setName(RoleConstants.USER);
1172                    role.setType(RoleConstants.TYPE_REGULAR);
1173    
1174                    _roles.add(role);
1175    
1176                    _userRole = role;
1177            }
1178    
1179            public void initUserNames() throws Exception {
1180                    if (_userNames != null) {
1181                            return;
1182                    }
1183    
1184                    _userNames = new Object[2];
1185    
1186                    String dependenciesDir =
1187                            "../portal-impl/src/com/liferay/portal/tools/samplesqlbuilder/" +
1188                                    "dependencies/";
1189    
1190                    List<String> firstNames = ListUtil.fromFile(
1191                            new File(_baseDir, dependenciesDir + "first_names.txt"));
1192                    List<String> lastNames = ListUtil.fromFile(
1193                            new File(_baseDir, dependenciesDir + "last_names.txt"));
1194    
1195                    _userNames[0] = firstNames;
1196                    _userNames[1] = lastNames;
1197            }
1198    
1199            public IntegerWrapper newInteger() {
1200                    return new IntegerWrapper();
1201            }
1202    
1203            protected ResourceCode newResourceCode() {
1204                    ResourceCode resourceCode = new ResourceCodeImpl();
1205    
1206                    resourceCode.setCodeId(_resourceCodeCounter.get());
1207    
1208                    return resourceCode;
1209            }
1210    
1211            protected Role newRole() {
1212                    Role role = new RoleImpl();
1213    
1214                    role.setRoleId(_counter.get());
1215                    role.setClassNameId(_roleClassName.getClassNameId());
1216                    role.setClassPK(role.getRoleId());
1217    
1218                    return role;
1219            }
1220    
1221            private Role _administratorRole;
1222            private String _baseDir;
1223            private ClassName _blogsEntryClassName;
1224            private List<ClassName> _classNames;
1225            private Company _company;
1226            private SimpleCounter _counter;
1227            private List<CounterModelImpl> _counters;
1228            private ClassName _ddmContentClassName;
1229            private User _defaultUser;
1230            private ClassName _dlFileEntryClassName;
1231            private ClassName _groupClassName;
1232            private List<Group> _groups;
1233            private Group _guestGroup;
1234            private Role _guestRole;
1235            private Map<String, Long> _individualResourceCodeIds;
1236            private Map<Long, String> _individualResourceNames;
1237            private int _maxGroupsCount;
1238            private int _maxUserToGroupCount;
1239            private ClassName _mbMessageClassName;
1240            private Role _organizationAdministratorRole;
1241            private Role _organizationOwnerRole;
1242            private Role _organizationUserRole;
1243            private Role _ownerRole;
1244            private SimpleCounter _permissionCounter;
1245            private Role _powerUserRole;
1246            private SimpleCounter _resourceCodeCounter;
1247            private List<ResourceCode> _resourceCodes;
1248            private SimpleCounter _resourceCounter;
1249            private SimpleCounter _resourcePermissionCounter;
1250            private ClassName _roleClassName;
1251            private List<Role> _roles;
1252            private Role _siteAdministratorRole;
1253            private Role _siteMemberRole;
1254            private Role _siteOwnerRole;
1255            private SimpleCounter _socialActivityCounter;
1256            private ClassName _userClassName;
1257            private Object[] _userNames;
1258            private Role _userRole;
1259            private ClassName _wikiPageClassName;
1260    
1261    }