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