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.DLFileEntryType;
060    import com.liferay.portlet.documentlibrary.model.DLFileEntryTypeConstants;
061    import com.liferay.portlet.documentlibrary.model.DLFileVersion;
062    import com.liferay.portlet.documentlibrary.model.DLFolder;
063    import com.liferay.portlet.documentlibrary.model.DLSync;
064    import com.liferay.portlet.documentlibrary.model.DLSyncConstants;
065    import com.liferay.portlet.documentlibrary.model.impl.DLFileEntryImpl;
066    import com.liferay.portlet.documentlibrary.model.impl.DLFileEntryMetadataImpl;
067    import com.liferay.portlet.documentlibrary.model.impl.DLFileEntryTypeImpl;
068    import com.liferay.portlet.documentlibrary.model.impl.DLFileVersionImpl;
069    import com.liferay.portlet.documentlibrary.model.impl.DLFolderImpl;
070    import com.liferay.portlet.documentlibrary.model.impl.DLSyncImpl;
071    import com.liferay.portlet.dynamicdatalists.model.DDLRecord;
072    import com.liferay.portlet.dynamicdatalists.model.DDLRecordSet;
073    import com.liferay.portlet.dynamicdatalists.model.DDLRecordVersion;
074    import com.liferay.portlet.dynamicdatalists.model.impl.DDLRecordImpl;
075    import com.liferay.portlet.dynamicdatalists.model.impl.DDLRecordSetImpl;
076    import com.liferay.portlet.dynamicdatalists.model.impl.DDLRecordVersionImpl;
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.journal.model.JournalArticle;
086    import com.liferay.portlet.journal.model.JournalArticleResource;
087    import com.liferay.portlet.journal.model.impl.JournalArticleImpl;
088    import com.liferay.portlet.journal.model.impl.JournalArticleResourceImpl;
089    import com.liferay.portlet.messageboards.model.MBCategory;
090    import com.liferay.portlet.messageboards.model.MBCategoryConstants;
091    import com.liferay.portlet.messageboards.model.MBDiscussion;
092    import com.liferay.portlet.messageboards.model.MBMessage;
093    import com.liferay.portlet.messageboards.model.MBStatsUser;
094    import com.liferay.portlet.messageboards.model.MBThread;
095    import com.liferay.portlet.messageboards.model.impl.MBCategoryImpl;
096    import com.liferay.portlet.messageboards.model.impl.MBDiscussionImpl;
097    import com.liferay.portlet.messageboards.model.impl.MBMessageImpl;
098    import com.liferay.portlet.messageboards.model.impl.MBStatsUserImpl;
099    import com.liferay.portlet.messageboards.model.impl.MBThreadImpl;
100    import com.liferay.portlet.social.model.SocialActivity;
101    import com.liferay.portlet.social.model.impl.SocialActivityImpl;
102    import com.liferay.portlet.wiki.model.WikiNode;
103    import com.liferay.portlet.wiki.model.WikiPage;
104    import com.liferay.portlet.wiki.model.impl.WikiNodeImpl;
105    import com.liferay.portlet.wiki.model.impl.WikiPageImpl;
106    import com.liferay.util.SimpleCounter;
107    
108    import java.io.File;
109    
110    import java.text.Format;
111    
112    import java.util.ArrayList;
113    import java.util.Date;
114    import java.util.List;
115    
116    /**
117     * @author Brian Wing Shun Chan
118     */
119    public class DataFactory {
120    
121            public DataFactory(
122                    String baseDir, int maxGroupsCount, int maxJournalArticleSize,
123                    int maxMBCategoryCount, int maxMBThreadCount, int maxMBMessageCount,
124                    int maxUserToGroupCount) {
125    
126                    try {
127                            _baseDir = baseDir;
128                            _maxGroupsCount = maxGroupsCount;
129                            _maxUserToGroupCount = maxUserToGroupCount;
130                            _maxMBCategoryCount = maxMBCategoryCount;
131                            _maxMBThreadCount = maxMBThreadCount;
132                            _maxMBMessageCount = maxMBMessageCount;
133    
134                            initSimpleCounters();
135    
136                            initClassNames();
137                            initCompany();
138                            initDefaultUser();
139                            initDLFileEntryType();
140                            initGuestGroup();
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(_dlFileEntryClassNameId);
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 DLFileVersion addDLFileVersion(DLFileEntry dlFileEntry) {
338                    DLFileVersion dlFileVersion = new DLFileVersionImpl();
339    
340                    dlFileVersion.setFileVersionId(_counter.get());
341                    dlFileVersion.setGroupId(dlFileEntry.getGroupId());
342                    dlFileVersion.setCompanyId(dlFileEntry.getCompanyId());
343                    dlFileVersion.setUserId(dlFileEntry.getUserId());
344                    dlFileVersion.setRepositoryId(dlFileEntry.getRepositoryId());
345                    dlFileVersion.setFileEntryId(dlFileEntry.getFileEntryId());
346                    dlFileVersion.setExtension(dlFileEntry.getExtension());
347                    dlFileVersion.setMimeType(dlFileEntry.getMimeType());
348                    dlFileVersion.setTitle(dlFileEntry.getTitle());
349                    dlFileVersion.setDescription(dlFileEntry.getDescription());
350                    dlFileVersion.setSize(dlFileEntry.getSize());
351    
352                    return dlFileVersion;
353            }
354    
355            public DLFolder addDLFolder(
356                    long groupId, long companyId, long userId, long parentFolderId,
357                    String name, String description) {
358    
359                    DLFolder dlFolder = new DLFolderImpl();
360    
361                    dlFolder.setFolderId(_counter.get());
362                    dlFolder.setGroupId(groupId);
363                    dlFolder.setCompanyId(companyId);
364                    dlFolder.setUserId(userId);
365                    dlFolder.setCreateDate(newCreateDate());
366                    dlFolder.setRepositoryId(groupId);
367                    dlFolder.setParentFolderId(parentFolderId);
368                    dlFolder.setName(name);
369                    dlFolder.setDescription(description);
370    
371                    return dlFolder;
372            }
373    
374            public DLSync addDLSync(
375                    long companyId, long fileId, long repositoryId, long parentFolderId,
376                    boolean typeFolder) {
377    
378                    DLSync dlSync = new DLSyncImpl();
379    
380                    dlSync.setSyncId(_counter.get());
381                    dlSync.setCompanyId(companyId);
382                    dlSync.setFileId(fileId);
383                    dlSync.setRepositoryId(repositoryId);
384                    dlSync.setParentFolderId(parentFolderId);
385                    dlSync.setEvent(DLSyncConstants.EVENT_ADD);
386    
387                    if (typeFolder) {
388                            dlSync.setType(DLSyncConstants.TYPE_FOLDER);
389                    }
390                    else {
391                            dlSync.setType(DLSyncConstants.TYPE_FILE);
392                    }
393    
394                    return dlSync;
395            }
396    
397            public Group addGroup(
398                    long groupId, long classNameId, long classPK, String name,
399                    String friendlyURL, boolean site) {
400    
401                    Group group = new GroupImpl();
402    
403                    group.setGroupId(groupId);
404                    group.setClassNameId(classNameId);
405                    group.setClassPK(classPK);
406                    group.setName(name);
407                    group.setFriendlyURL(friendlyURL);
408                    group.setSite(site);
409    
410                    return group;
411            }
412    
413            public JournalArticle addJournalArticle(
414                    long resourcePrimKey, long groupId, long companyId, String articleId) {
415    
416                    JournalArticle journalArticle = new JournalArticleImpl();
417    
418                    journalArticle.setId(_counter.get());
419                    journalArticle.setResourcePrimKey(resourcePrimKey);
420                    journalArticle.setGroupId(groupId);
421                    journalArticle.setCompanyId(companyId);
422                    journalArticle.setArticleId(articleId);
423                    journalArticle.setContent(_journalArticleContent);
424    
425                    return journalArticle;
426            }
427    
428            public JournalArticleResource addJournalArticleResource(long groupId) {
429                    JournalArticleResource journalArticleResource =
430                            new JournalArticleResourceImpl();
431    
432                    journalArticleResource.setResourcePrimKey(_counter.get());
433                    journalArticleResource.setGroupId(groupId);
434                    journalArticleResource.setArticleId(String.valueOf(_counter.get()));
435    
436                    return journalArticleResource;
437            }
438    
439            public Layout addLayout(
440                    int layoutId, String name, String friendlyURL, String column1,
441                    String column2) {
442    
443                    Layout layout = new LayoutImpl();
444    
445                    layout.setPlid(_counter.get());
446                    layout.setPrivateLayout(false);
447                    layout.setLayoutId(layoutId);
448                    layout.setName(name);
449                    layout.setFriendlyURL(friendlyURL);
450    
451                    UnicodeProperties typeSettingsProperties = new UnicodeProperties(true);
452    
453                    typeSettingsProperties.setProperty(
454                            LayoutTypePortletConstants.LAYOUT_TEMPLATE_ID, "2_columns_ii");
455                    typeSettingsProperties.setProperty("column-1", column1);
456                    typeSettingsProperties.setProperty("column-2", column2);
457    
458                    String typeSettings = StringUtil.replace(
459                            typeSettingsProperties.toString(), "\n", "\\n");
460    
461                    layout.setTypeSettings(typeSettings);
462    
463                    return layout;
464            }
465    
466            public MBCategory addMBCategory(
467                    long categoryId, long groupId, long companyId, long userId, String name,
468                    String description, int threadCount, int messageCount) {
469    
470                    MBCategory mbCategory = new MBCategoryImpl();
471    
472                    mbCategory.setCategoryId(categoryId);
473                    mbCategory.setGroupId(groupId);
474                    mbCategory.setCompanyId(companyId);
475                    mbCategory.setUserId(userId);
476                    mbCategory.setName(name);
477                    mbCategory.setDescription(description);
478                    mbCategory.setDisplayStyle(MBCategoryConstants.DEFAULT_DISPLAY_STYLE);
479                    mbCategory.setThreadCount(threadCount);
480                    mbCategory.setMessageCount(messageCount);
481    
482                    return mbCategory;
483            }
484    
485            public MBDiscussion addMBDiscussion(
486                    long classNameId, long classPK, long threadId) {
487    
488                    MBDiscussion mbDiscussion = new MBDiscussionImpl();
489    
490                    mbDiscussion.setDiscussionId(_counter.get());
491                    mbDiscussion.setClassNameId(classNameId);
492                    mbDiscussion.setClassPK(classPK);
493                    mbDiscussion.setThreadId(threadId);
494    
495                    return mbDiscussion;
496            }
497    
498            public MBMessage addMBMessage(
499                    long messageId, long groupId, long userId, long classNameId,
500                    long classPK, long categoryId, long threadId, long rootMessageId,
501                    long parentMessageId, String subject, String body) {
502    
503                    MBMessage mbMessage = new MBMessageImpl();
504    
505                    mbMessage.setMessageId(messageId);
506                    mbMessage.setGroupId(groupId);
507                    mbMessage.setUserId(userId);
508                    mbMessage.setClassNameId(classNameId);
509                    mbMessage.setClassPK(classPK);
510                    mbMessage.setCategoryId(categoryId);
511                    mbMessage.setThreadId(threadId);
512                    mbMessage.setRootMessageId(rootMessageId);
513                    mbMessage.setParentMessageId(parentMessageId);
514                    mbMessage.setSubject(subject);
515                    mbMessage.setBody(body);
516    
517                    return mbMessage;
518            }
519    
520            public MBStatsUser addMBStatsUser(long groupId, long userId) {
521                    MBStatsUser mbStatsUser = new MBStatsUserImpl();
522    
523                    mbStatsUser.setGroupId(groupId);
524                    mbStatsUser.setUserId(userId);
525    
526                    return mbStatsUser;
527            }
528    
529            public MBThread addMBThread(
530                    long threadId, long groupId, long companyId, long categoryId,
531                    long rootMessageId, int messageCount, long lastPostByUserId) {
532    
533                    MBThread mbThread = new MBThreadImpl();
534    
535                    mbThread.setThreadId(threadId);
536                    mbThread.setGroupId(groupId);
537                    mbThread.setCompanyId(companyId);
538                    mbThread.setCategoryId(categoryId);
539                    mbThread.setRootMessageId(rootMessageId);
540                    mbThread.setRootMessageUserId(lastPostByUserId);
541                    mbThread.setMessageCount(messageCount);
542                    mbThread.setLastPostByUserId(lastPostByUserId);
543    
544                    return mbThread;
545            }
546    
547            public PortletPreferences addPortletPreferences(
548                    long ownerId, long plid, String portletId, String preferences) {
549    
550                    PortletPreferences portletPreferences = new PortletPreferencesImpl();
551    
552                    portletPreferences.setPortletPreferencesId(_counter.get());
553                    portletPreferences.setOwnerId(ownerId);
554                    portletPreferences.setOwnerType(PortletKeys.PREFS_OWNER_TYPE_LAYOUT);
555                    portletPreferences.setPlid(plid);
556                    portletPreferences.setPortletId(portletId);
557                    portletPreferences.setPreferences(preferences);
558    
559                    return portletPreferences;
560            }
561    
562            public List<ResourcePermission> addResourcePermission(
563                    long companyId, String name, String primKey) {
564    
565                    List<ResourcePermission> resourcePermissions =
566                            new ArrayList<ResourcePermission>(2);
567    
568                    ResourcePermission resourcePermission = new ResourcePermissionImpl();
569    
570                    resourcePermission.setResourcePermissionId(
571                            _resourcePermissionCounter.get());
572                    resourcePermission.setCompanyId(companyId);
573                    resourcePermission.setName(name);
574                    resourcePermission.setScope(ResourceConstants.SCOPE_INDIVIDUAL);
575                    resourcePermission.setPrimKey(primKey);
576                    resourcePermission.setRoleId(_ownerRole.getRoleId());
577                    resourcePermission.setOwnerId(_defaultUser.getUserId());
578                    resourcePermission.setActionIds(1);
579    
580                    resourcePermissions.add(resourcePermission);
581    
582                    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(_guestRole.getRoleId());
591                    resourcePermission.setOwnerId(0);
592                    resourcePermission.setActionIds(1);
593    
594                    resourcePermissions.add(resourcePermission);
595    
596                    return resourcePermissions;
597            }
598    
599            public SocialActivity addSocialActivity(
600                    long groupId, long companyId, long userId, long classNameId,
601                    long classPK) {
602    
603                    SocialActivity socialActivity = new SocialActivityImpl();
604    
605                    socialActivity.setActivityId(_socialActivityCounter.get());
606                    socialActivity.setGroupId(groupId);
607                    socialActivity.setCompanyId(companyId);
608                    socialActivity.setUserId(userId);
609                    socialActivity.setClassNameId(classNameId);
610                    socialActivity.setClassPK(classPK);
611    
612                    return socialActivity;
613            }
614    
615            public User addUser(boolean defaultUser, String screenName) {
616                    User user = new UserImpl();
617    
618                    user.setUserId(_counter.get());
619                    user.setDefaultUser(defaultUser);
620    
621                    if (Validator.isNull(screenName)) {
622                            screenName = String.valueOf(user.getUserId());
623                    }
624    
625                    user.setScreenName(screenName);
626    
627                    String emailAddress = screenName + "@liferay.com";
628    
629                    user.setEmailAddress(emailAddress);
630    
631                    return user;
632            }
633    
634            public List<Long> addUserToGroupIds(long groupId) {
635                    List<Long> groupIds = new ArrayList<Long>(_maxUserToGroupCount + 1);
636    
637                    groupIds.add(_guestGroup.getGroupId());
638    
639                    if ((groupId + _maxUserToGroupCount) > _maxGroupsCount) {
640                            groupId = groupId - _maxUserToGroupCount + 1;
641                    }
642    
643                    for (int i = 0; i < _maxUserToGroupCount; i++) {
644                            groupIds.add(groupId + i);
645                    }
646    
647                    return groupIds;
648            }
649    
650            public WikiNode addWikiNode(
651                    long groupId, long userId, String name, String description) {
652    
653                    WikiNode wikiNode = new WikiNodeImpl();
654    
655                    wikiNode.setNodeId(_counter.get());
656                    wikiNode.setGroupId(groupId);
657                    wikiNode.setUserId(userId);
658                    wikiNode.setName(name);
659                    wikiNode.setDescription(description);
660    
661                    return wikiNode;
662            }
663    
664            public WikiPage addWikiPage(
665                    long groupId, long userId, long nodeId, String title, double version,
666                    String content, boolean head) {
667    
668                    WikiPage wikiPage = new WikiPageImpl();
669    
670                    wikiPage.setPageId(_counter.get());
671                    wikiPage.setResourcePrimKey(_counter.get());
672                    wikiPage.setGroupId(groupId);
673                    wikiPage.setUserId(userId);
674                    wikiPage.setNodeId(nodeId);
675                    wikiPage.setTitle(title);
676                    wikiPage.setVersion(version);
677                    wikiPage.setContent(content);
678                    wikiPage.setHead(head);
679    
680                    return wikiPage;
681            }
682    
683            public Role getAdministratorRole() {
684                    return _administratorRole;
685            }
686    
687            public long getBlogsEntryClassNameId() {
688                    return _blogsEntryClassNameId;
689            }
690    
691            public List<ClassName> getClassNames() {
692                    return _classNames;
693            }
694    
695            public Company getCompany() {
696                    return _company;
697            }
698    
699            public long getCompanyId() {
700                    return _company.getCompanyId();
701            }
702    
703            public SimpleCounter getCounter() {
704                    return _counter;
705            }
706    
707            public List<CounterModelImpl> getCounters() {
708                    return _counters;
709            }
710    
711            public String getDateLong(Date date) {
712                    return String.valueOf(date.getTime());
713            }
714    
715            public String getDateString(Date date) {
716                    if (date == null) {
717                            return null;
718                    }
719    
720                    return _simpleDateFormat.format(date);
721            }
722    
723            public long getDDLRecordSetClassNameId() {
724                    return _ddlRecordSetClassNameId;
725            }
726    
727            public long getDDMContentClassNameId() {
728                    return _ddmContentClassNameId;
729            }
730    
731            public DLFileEntryType getDefaultDLFileEntryType() {
732                    return _defaultDLFileEntryType;
733            }
734    
735            public User getDefaultUser() {
736                    return _defaultUser;
737            }
738    
739            public long getDefaultUserId() {
740                    return _defaultUser.getUserId();
741            }
742    
743            public long getDLFileEntryClassNameId() {
744                    return _dlFileEntryClassNameId;
745            }
746    
747            public long getGroupClassNameId() {
748                    return _groupClassNameId;
749            }
750    
751            public Group getGuestGroup() {
752                    return _guestGroup;
753            }
754    
755            public Role getGuestRole() {
756                    return _guestRole;
757            }
758    
759            public long getJournalArticleClassNameId() {
760                    return _journalArticleClassNameId;
761            }
762    
763            public long getMBMessageClassNameId() {
764                    return _mbMessageClassNameId;
765            }
766    
767            public Role getOrganizationAdministratorRole() {
768                    return _organizationAdministratorRole;
769            }
770    
771            public Role getOrganizationOwnerRole() {
772                    return _organizationOwnerRole;
773            }
774    
775            public Role getOrganizationUserRole() {
776                    return _organizationUserRole;
777            }
778    
779            public Role getPowerUserRole() {
780                    return _powerUserRole;
781            }
782    
783            public long getRoleClassNameId() {
784                    return _roleClassNameId;
785            }
786    
787            public List<Role> getRoles() {
788                    return _roles;
789            }
790    
791            public Role getSiteAdministratorRole() {
792                    return _siteAdministratorRole;
793            }
794    
795            public Role getSiteMemberRole() {
796                    return _siteMemberRole;
797            }
798    
799            public Role getSiteOwnerRole() {
800                    return _siteOwnerRole;
801            }
802    
803            public long getUserClassNameId() {
804                    return _userClassNameId;
805            }
806    
807            public Role getUserRole() {
808                    return _userRole;
809            }
810    
811            public SimpleCounter getUserScreenNameCounter() {
812                    return _userScreenNameCounter;
813            }
814    
815            public long getWikiPageClassNameId() {
816                    return _wikiPageClassNameId;
817            }
818    
819            public void initClassNames() {
820                    _classNames = new ArrayList<ClassName>();
821    
822                    List<String> models = ModelHintsUtil.getModels();
823    
824                    for (String model : models) {
825                            ClassName className = new ClassNameImpl();
826    
827                            long classNameId = _counter.get();
828    
829                            className.setClassNameId(classNameId);
830    
831                            className.setValue(model);
832    
833                            _classNames.add(className);
834    
835                            if (model.equals(BlogsEntry.class.getName())) {
836                                    _blogsEntryClassNameId = classNameId;
837                            }
838                            else if (model.equals(DDLRecordSet.class.getName())) {
839                                    _ddlRecordSetClassNameId = classNameId;
840                            }
841                            else if (model.equals(DDMContent.class.getName())) {
842                                    _ddmContentClassNameId = classNameId;
843                            }
844                            else if (model.equals(DLFileEntry.class.getName())) {
845                                    _dlFileEntryClassNameId = classNameId;
846                            }
847                            else if (model.equals(Group.class.getName())) {
848                                    _groupClassNameId = classNameId;
849                            }
850                            else if (model.equals(JournalArticle.class.getName())) {
851                                    _journalArticleClassNameId = classNameId;
852                            }
853                            else if (model.equals(MBMessage.class.getName())) {
854                                    _mbMessageClassNameId = classNameId;
855                            }
856                            else if (model.equals(Role.class.getName())) {
857                                    _roleClassNameId = classNameId;
858                            }
859                            else if (model.equals(User.class.getName())) {
860                                    _userClassNameId = classNameId;
861                            }
862                            else if (model.equals(WikiPage.class.getName())) {
863                                    _wikiPageClassNameId = classNameId;
864                            }
865                    }
866            }
867    
868            public void initCompany() {
869                    _company = new CompanyImpl();
870    
871                    _company.setCompanyId(_counter.get());
872                    _company.setAccountId(_counter.get());
873            }
874    
875            public void initCounters() {
876                    if (_counters != null) {
877                            return;
878                    }
879    
880                    _counters = new ArrayList<CounterModelImpl>();
881    
882                    // Counter
883    
884                    CounterModelImpl counter = new CounterModelImpl();
885    
886                    counter.setName(Counter.class.getName());
887                    counter.setCurrentId(_counter.get());
888    
889                    _counters.add(counter);
890    
891                    // ResourcePermission
892    
893                    counter = new CounterModelImpl();
894    
895                    counter.setName(ResourcePermission.class.getName());
896                    counter.setCurrentId(_resourcePermissionCounter.get());
897    
898                    _counters.add(counter);
899    
900                    // SocialActivity
901    
902                    counter = new CounterModelImpl();
903    
904                    counter.setName(SocialActivity.class.getName());
905                    counter.setCurrentId(_socialActivityCounter.get());
906    
907                    _counters.add(counter);
908            }
909    
910            public void initDefaultUser() {
911                    _defaultUser = new UserImpl();
912    
913                    _defaultUser.setUserId(_counter.get());
914            }
915    
916            public void initDLFileEntryType() {
917                    _defaultDLFileEntryType = new DLFileEntryTypeImpl();
918    
919                    _defaultDLFileEntryType.setUuid(SequentialUUID.generate());
920                    _defaultDLFileEntryType.setFileEntryTypeId(
921                            DLFileEntryTypeConstants.FILE_ENTRY_TYPE_ID_BASIC_DOCUMENT);
922                    _defaultDLFileEntryType.setCreateDate(newCreateDate());
923                    _defaultDLFileEntryType.setModifiedDate(newCreateDate());
924                    _defaultDLFileEntryType.setName(
925                            DLFileEntryTypeConstants.NAME_BASIC_DOCUMENT);
926            }
927    
928            public void initGuestGroup() {
929                    _guestGroup = new GroupImpl();
930    
931                    _guestGroup.setGroupId(_counter.get());
932                    _guestGroup.setClassNameId(_groupClassNameId);
933                    _guestGroup.setClassPK(_guestGroup.getGroupId());
934                    _guestGroup.setName(GroupConstants.GUEST);
935                    _guestGroup.setFriendlyURL("/guest");
936                    _guestGroup.setSite(true);
937            }
938    
939            public void initJournalArticle(int maxJournalArticleSize) throws Exception {
940                    if (maxJournalArticleSize <= 0) {
941                            maxJournalArticleSize = 1;
942                    }
943    
944                    char[] chars = new char[maxJournalArticleSize];
945    
946                    for (int i = 0; i < maxJournalArticleSize; i++) {
947                            chars[i] = (char)(CharPool.LOWER_CASE_A + (i % 26));
948                    }
949    
950                    _journalArticleContent = new String(chars);
951            }
952    
953            public void initRoles() {
954                    if (_roles != null) {
955                            return;
956                    }
957    
958                    _roles = new ArrayList<Role>();
959    
960                    // Administrator
961    
962                    Role role = newRole();
963    
964                    role.setName(RoleConstants.ADMINISTRATOR);
965                    role.setType(RoleConstants.TYPE_REGULAR);
966    
967                    _roles.add(role);
968    
969                    _administratorRole = role;
970    
971                    // Guest
972    
973                    role = newRole();
974    
975                    role.setName(RoleConstants.GUEST);
976                    role.setType(RoleConstants.TYPE_REGULAR);
977    
978                    _roles.add(role);
979    
980                    _guestRole = role;
981    
982                    // Organization Administrator
983    
984                    role = newRole();
985    
986                    role.setName(RoleConstants.ORGANIZATION_ADMINISTRATOR);
987                    role.setType(RoleConstants.TYPE_ORGANIZATION);
988    
989                    _roles.add(role);
990    
991                    _organizationAdministratorRole = role;
992    
993                    // Organization Owner
994    
995                    role = newRole();
996    
997                    role.setName(RoleConstants.ORGANIZATION_OWNER);
998                    role.setType(RoleConstants.TYPE_ORGANIZATION);
999    
1000                    _roles.add(role);
1001    
1002                    _organizationOwnerRole = role;
1003    
1004                    // Organization User
1005    
1006                    role = newRole();
1007    
1008                    role.setName(RoleConstants.ORGANIZATION_USER);
1009                    role.setType(RoleConstants.TYPE_ORGANIZATION);
1010    
1011                    _roles.add(role);
1012    
1013                    _organizationUserRole = role;
1014    
1015                    // Owner
1016    
1017                    role = newRole();
1018    
1019                    role.setName(RoleConstants.OWNER);
1020                    role.setType(RoleConstants.TYPE_REGULAR);
1021    
1022                    _roles.add(role);
1023    
1024                    _ownerRole = role;
1025    
1026                    // Power User
1027    
1028                    role = newRole();
1029    
1030                    role.setName(RoleConstants.POWER_USER);
1031                    role.setType(RoleConstants.TYPE_REGULAR);
1032    
1033                    _roles.add(role);
1034    
1035                    _powerUserRole = role;
1036    
1037                    // Site Administrator
1038    
1039                    role = newRole();
1040    
1041                    role.setName(RoleConstants.SITE_ADMINISTRATOR);
1042                    role.setType(RoleConstants.TYPE_SITE);
1043    
1044                    _roles.add(role);
1045    
1046                    _siteAdministratorRole = role;
1047    
1048                    // Site Member
1049    
1050                    role = newRole();
1051    
1052                    role.setName(RoleConstants.SITE_MEMBER);
1053                    role.setType(RoleConstants.TYPE_SITE);
1054    
1055                    _roles.add(role);
1056    
1057                    _siteMemberRole = role;
1058    
1059                    // Site Owner
1060    
1061                    role = newRole();
1062    
1063                    role.setName(RoleConstants.SITE_OWNER);
1064                    role.setType(RoleConstants.TYPE_SITE);
1065    
1066                    _roles.add(role);
1067    
1068                    _siteOwnerRole = role;
1069    
1070                    // User
1071    
1072                    role = newRole();
1073    
1074                    role.setName(RoleConstants.USER);
1075                    role.setType(RoleConstants.TYPE_REGULAR);
1076    
1077                    _roles.add(role);
1078    
1079                    _userRole = role;
1080            }
1081    
1082            public void initSimpleCounters() {
1083                    int totalMThreadCount = _maxMBCategoryCount * _maxMBThreadCount;
1084                    int totalMBMessageCount = totalMThreadCount * _maxMBMessageCount;
1085    
1086                    int counterOffset =
1087                            _maxMBCategoryCount + totalMThreadCount + totalMBMessageCount;
1088    
1089                    counterOffset = _maxGroupsCount * counterOffset;
1090                    counterOffset = _maxGroupsCount + counterOffset + 1;
1091    
1092                    _counter = new SimpleCounter(counterOffset);
1093                    _dlDateCounter = new SimpleCounter();
1094                    _resourcePermissionCounter = new SimpleCounter();
1095                    _socialActivityCounter = new SimpleCounter();
1096                    _userScreenNameCounter = new SimpleCounter();
1097            }
1098    
1099            public void initUserNames() throws Exception {
1100                    String dependenciesDir =
1101                            "../portal-impl/src/com/liferay/portal/tools/samplesqlbuilder/" +
1102                                    "dependencies/";
1103    
1104                    _firstNames = ListUtil.fromFile(
1105                            new File(_baseDir, dependenciesDir + "first_names.txt"));
1106                    _lastNames = ListUtil.fromFile(
1107                            new File(_baseDir, dependenciesDir + "last_names.txt"));
1108            }
1109    
1110            public IntegerWrapper newInteger() {
1111                    return new IntegerWrapper();
1112            }
1113    
1114            public String[] nextUserName(long index) {
1115                    String[] userName = new String[2];
1116    
1117                    userName[0] = _firstNames.get(
1118                            (int)(index / _lastNames.size()) % _firstNames.size());
1119                    userName[1] = _lastNames.get((int)(index % _lastNames.size()));
1120    
1121                    return userName;
1122            }
1123    
1124            protected Date newCreateDate() {
1125                    return new Date(_baseCreateTime + (_dlDateCounter.get() * Time.SECOND));
1126            }
1127    
1128            protected Role newRole() {
1129                    Role role = new RoleImpl();
1130    
1131                    role.setRoleId(_counter.get());
1132                    role.setClassNameId(_roleClassNameId);
1133                    role.setClassPK(role.getRoleId());
1134    
1135                    return role;
1136            }
1137    
1138            private Role _administratorRole;
1139            private long _baseCreateTime = System.currentTimeMillis() + Time.YEAR;
1140            private String _baseDir;
1141            private long _blogsEntryClassNameId;
1142            private List<ClassName> _classNames;
1143            private Company _company;
1144            private SimpleCounter _counter;
1145            private List<CounterModelImpl> _counters;
1146            private long _ddlRecordSetClassNameId;
1147            private long _ddmContentClassNameId;
1148            private DLFileEntryType _defaultDLFileEntryType;
1149            private User _defaultUser;
1150            private SimpleCounter _dlDateCounter;
1151            private long _dlFileEntryClassNameId;
1152            private List<String> _firstNames;
1153            private long _groupClassNameId;
1154            private Group _guestGroup;
1155            private Role _guestRole;
1156            private long _journalArticleClassNameId;
1157            private String _journalArticleContent;
1158            private List<String> _lastNames;
1159            private int _maxGroupsCount;
1160            private int _maxMBCategoryCount;
1161            private int _maxMBMessageCount;
1162            private int _maxMBThreadCount;
1163            private int _maxUserToGroupCount;
1164            private long _mbMessageClassNameId;
1165            private Role _organizationAdministratorRole;
1166            private Role _organizationOwnerRole;
1167            private Role _organizationUserRole;
1168            private Role _ownerRole;
1169            private Role _powerUserRole;
1170            private SimpleCounter _resourcePermissionCounter;
1171            private long _roleClassNameId;
1172            private List<Role> _roles;
1173            private Format _simpleDateFormat =
1174                    FastDateFormatFactoryUtil.getSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
1175            private Role _siteAdministratorRole;
1176            private Role _siteMemberRole;
1177            private Role _siteOwnerRole;
1178            private SimpleCounter _socialActivityCounter;
1179            private long _userClassNameId;
1180            private Role _userRole;
1181            private SimpleCounter _userScreenNameCounter;
1182            private long _wikiPageClassNameId;
1183    
1184    }