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