001    /**
002     * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portal.tools.samplesqlbuilder;
016    
017    import com.liferay.counter.model.Counter;
018    import com.liferay.counter.model.CounterModel;
019    import com.liferay.counter.model.impl.CounterModelImpl;
020    import com.liferay.portal.kernel.io.unsync.UnsyncBufferedReader;
021    import com.liferay.portal.kernel.metadata.RawMetadataProcessor;
022    import com.liferay.portal.kernel.template.TemplateConstants;
023    import com.liferay.portal.kernel.util.CharPool;
024    import com.liferay.portal.kernel.util.ContentTypes;
025    import com.liferay.portal.kernel.util.FastDateFormatFactoryUtil;
026    import com.liferay.portal.kernel.util.FriendlyURLNormalizerUtil;
027    import com.liferay.portal.kernel.util.GetterUtil;
028    import com.liferay.portal.kernel.util.IntegerWrapper;
029    import com.liferay.portal.kernel.util.StringBundler;
030    import com.liferay.portal.kernel.util.StringPool;
031    import com.liferay.portal.kernel.util.StringUtil;
032    import com.liferay.portal.kernel.util.Time;
033    import com.liferay.portal.kernel.util.UnicodeProperties;
034    import com.liferay.portal.kernel.util.Validator;
035    import com.liferay.portal.kernel.workflow.WorkflowConstants;
036    import com.liferay.portal.model.AccountModel;
037    import com.liferay.portal.model.ClassNameModel;
038    import com.liferay.portal.model.Company;
039    import com.liferay.portal.model.CompanyModel;
040    import com.liferay.portal.model.ContactConstants;
041    import com.liferay.portal.model.ContactModel;
042    import com.liferay.portal.model.Group;
043    import com.liferay.portal.model.GroupConstants;
044    import com.liferay.portal.model.GroupModel;
045    import com.liferay.portal.model.Layout;
046    import com.liferay.portal.model.LayoutConstants;
047    import com.liferay.portal.model.LayoutFriendlyURLModel;
048    import com.liferay.portal.model.LayoutModel;
049    import com.liferay.portal.model.LayoutSetModel;
050    import com.liferay.portal.model.LayoutTypePortletConstants;
051    import com.liferay.portal.model.ModelHintsUtil;
052    import com.liferay.portal.model.PortletConstants;
053    import com.liferay.portal.model.PortletPreferencesModel;
054    import com.liferay.portal.model.ResourceConstants;
055    import com.liferay.portal.model.ResourcePermission;
056    import com.liferay.portal.model.ResourcePermissionModel;
057    import com.liferay.portal.model.Role;
058    import com.liferay.portal.model.RoleConstants;
059    import com.liferay.portal.model.RoleModel;
060    import com.liferay.portal.model.SubscriptionConstants;
061    import com.liferay.portal.model.SubscriptionModel;
062    import com.liferay.portal.model.User;
063    import com.liferay.portal.model.UserModel;
064    import com.liferay.portal.model.VirtualHostModel;
065    import com.liferay.portal.model.impl.AccountModelImpl;
066    import com.liferay.portal.model.impl.ClassNameModelImpl;
067    import com.liferay.portal.model.impl.CompanyModelImpl;
068    import com.liferay.portal.model.impl.ContactModelImpl;
069    import com.liferay.portal.model.impl.GroupModelImpl;
070    import com.liferay.portal.model.impl.LayoutFriendlyURLModelImpl;
071    import com.liferay.portal.model.impl.LayoutModelImpl;
072    import com.liferay.portal.model.impl.LayoutSetModelImpl;
073    import com.liferay.portal.model.impl.PortletPreferencesModelImpl;
074    import com.liferay.portal.model.impl.ResourcePermissionModelImpl;
075    import com.liferay.portal.model.impl.RoleModelImpl;
076    import com.liferay.portal.model.impl.SubscriptionModelImpl;
077    import com.liferay.portal.model.impl.UserModelImpl;
078    import com.liferay.portal.model.impl.VirtualHostModelImpl;
079    import com.liferay.portal.security.auth.FullNameGenerator;
080    import com.liferay.portal.security.auth.FullNameGeneratorFactory;
081    import com.liferay.portal.service.permission.PortletPermissionUtil;
082    import com.liferay.portal.util.PortletKeys;
083    import com.liferay.portal.util.PropsValues;
084    import com.liferay.portlet.PortletPreferencesFactory;
085    import com.liferay.portlet.PortletPreferencesFactoryImpl;
086    import com.liferay.portlet.PortletPreferencesImpl;
087    import com.liferay.portlet.asset.model.AssetCategory;
088    import com.liferay.portlet.asset.model.AssetCategoryConstants;
089    import com.liferay.portlet.asset.model.AssetCategoryModel;
090    import com.liferay.portlet.asset.model.AssetEntryModel;
091    import com.liferay.portlet.asset.model.AssetTag;
092    import com.liferay.portlet.asset.model.AssetTagModel;
093    import com.liferay.portlet.asset.model.AssetTagStatsModel;
094    import com.liferay.portlet.asset.model.AssetVocabulary;
095    import com.liferay.portlet.asset.model.AssetVocabularyModel;
096    import com.liferay.portlet.asset.model.impl.AssetCategoryModelImpl;
097    import com.liferay.portlet.asset.model.impl.AssetEntryModelImpl;
098    import com.liferay.portlet.asset.model.impl.AssetTagModelImpl;
099    import com.liferay.portlet.asset.model.impl.AssetTagStatsModelImpl;
100    import com.liferay.portlet.asset.model.impl.AssetVocabularyModelImpl;
101    import com.liferay.portlet.blogs.model.BlogsEntry;
102    import com.liferay.portlet.blogs.model.BlogsEntryModel;
103    import com.liferay.portlet.blogs.model.BlogsStatsUserModel;
104    import com.liferay.portlet.blogs.model.impl.BlogsEntryModelImpl;
105    import com.liferay.portlet.blogs.model.impl.BlogsStatsUserModelImpl;
106    import com.liferay.portlet.blogs.social.BlogsActivityKeys;
107    import com.liferay.portlet.documentlibrary.model.DLFileEntry;
108    import com.liferay.portlet.documentlibrary.model.DLFileEntryConstants;
109    import com.liferay.portlet.documentlibrary.model.DLFileEntryMetadata;
110    import com.liferay.portlet.documentlibrary.model.DLFileEntryMetadataModel;
111    import com.liferay.portlet.documentlibrary.model.DLFileEntryModel;
112    import com.liferay.portlet.documentlibrary.model.DLFileEntryTypeConstants;
113    import com.liferay.portlet.documentlibrary.model.DLFileEntryTypeModel;
114    import com.liferay.portlet.documentlibrary.model.DLFileVersionModel;
115    import com.liferay.portlet.documentlibrary.model.DLFolder;
116    import com.liferay.portlet.documentlibrary.model.DLFolderModel;
117    import com.liferay.portlet.documentlibrary.model.impl.DLFileEntryMetadataModelImpl;
118    import com.liferay.portlet.documentlibrary.model.impl.DLFileEntryModelImpl;
119    import com.liferay.portlet.documentlibrary.model.impl.DLFileEntryTypeModelImpl;
120    import com.liferay.portlet.documentlibrary.model.impl.DLFileVersionModelImpl;
121    import com.liferay.portlet.documentlibrary.model.impl.DLFolderModelImpl;
122    import com.liferay.portlet.documentlibrary.social.DLActivityKeys;
123    import com.liferay.portlet.dynamicdatalists.model.DDLRecordConstants;
124    import com.liferay.portlet.dynamicdatalists.model.DDLRecordModel;
125    import com.liferay.portlet.dynamicdatalists.model.DDLRecordSet;
126    import com.liferay.portlet.dynamicdatalists.model.DDLRecordSetConstants;
127    import com.liferay.portlet.dynamicdatalists.model.DDLRecordSetModel;
128    import com.liferay.portlet.dynamicdatalists.model.DDLRecordVersionModel;
129    import com.liferay.portlet.dynamicdatalists.model.impl.DDLRecordModelImpl;
130    import com.liferay.portlet.dynamicdatalists.model.impl.DDLRecordSetModelImpl;
131    import com.liferay.portlet.dynamicdatalists.model.impl.DDLRecordVersionModelImpl;
132    import com.liferay.portlet.dynamicdatamapping.model.DDMContent;
133    import com.liferay.portlet.dynamicdatamapping.model.DDMContentModel;
134    import com.liferay.portlet.dynamicdatamapping.model.DDMStorageLink;
135    import com.liferay.portlet.dynamicdatamapping.model.DDMStorageLinkModel;
136    import com.liferay.portlet.dynamicdatamapping.model.DDMStructure;
137    import com.liferay.portlet.dynamicdatamapping.model.DDMStructureLinkModel;
138    import com.liferay.portlet.dynamicdatamapping.model.DDMStructureModel;
139    import com.liferay.portlet.dynamicdatamapping.model.DDMTemplateConstants;
140    import com.liferay.portlet.dynamicdatamapping.model.DDMTemplateModel;
141    import com.liferay.portlet.dynamicdatamapping.model.impl.DDMContentModelImpl;
142    import com.liferay.portlet.dynamicdatamapping.model.impl.DDMStorageLinkModelImpl;
143    import com.liferay.portlet.dynamicdatamapping.model.impl.DDMStructureLinkModelImpl;
144    import com.liferay.portlet.dynamicdatamapping.model.impl.DDMStructureModelImpl;
145    import com.liferay.portlet.dynamicdatamapping.model.impl.DDMTemplateModelImpl;
146    import com.liferay.portlet.dynamicdatamapping.util.DDMImpl;
147    import com.liferay.portlet.journal.model.JournalArticle;
148    import com.liferay.portlet.journal.model.JournalArticleConstants;
149    import com.liferay.portlet.journal.model.JournalArticleModel;
150    import com.liferay.portlet.journal.model.JournalArticleResourceModel;
151    import com.liferay.portlet.journal.model.JournalContentSearchModel;
152    import com.liferay.portlet.journal.model.impl.JournalArticleModelImpl;
153    import com.liferay.portlet.journal.model.impl.JournalArticleResourceModelImpl;
154    import com.liferay.portlet.journal.model.impl.JournalContentSearchModelImpl;
155    import com.liferay.portlet.journal.social.JournalActivityKeys;
156    import com.liferay.portlet.messageboards.model.MBCategory;
157    import com.liferay.portlet.messageboards.model.MBCategoryConstants;
158    import com.liferay.portlet.messageboards.model.MBCategoryModel;
159    import com.liferay.portlet.messageboards.model.MBDiscussion;
160    import com.liferay.portlet.messageboards.model.MBDiscussionModel;
161    import com.liferay.portlet.messageboards.model.MBMailingListModel;
162    import com.liferay.portlet.messageboards.model.MBMessage;
163    import com.liferay.portlet.messageboards.model.MBMessageConstants;
164    import com.liferay.portlet.messageboards.model.MBMessageModel;
165    import com.liferay.portlet.messageboards.model.MBStatsUserModel;
166    import com.liferay.portlet.messageboards.model.MBThread;
167    import com.liferay.portlet.messageboards.model.MBThreadFlagModel;
168    import com.liferay.portlet.messageboards.model.MBThreadModel;
169    import com.liferay.portlet.messageboards.model.impl.MBCategoryModelImpl;
170    import com.liferay.portlet.messageboards.model.impl.MBDiscussionModelImpl;
171    import com.liferay.portlet.messageboards.model.impl.MBMailingListModelImpl;
172    import com.liferay.portlet.messageboards.model.impl.MBMessageModelImpl;
173    import com.liferay.portlet.messageboards.model.impl.MBStatsUserModelImpl;
174    import com.liferay.portlet.messageboards.model.impl.MBThreadFlagModelImpl;
175    import com.liferay.portlet.messageboards.model.impl.MBThreadModelImpl;
176    import com.liferay.portlet.messageboards.social.MBActivityKeys;
177    import com.liferay.portlet.social.model.SocialActivity;
178    import com.liferay.portlet.social.model.SocialActivityConstants;
179    import com.liferay.portlet.social.model.SocialActivityModel;
180    import com.liferay.portlet.social.model.impl.SocialActivityModelImpl;
181    import com.liferay.portlet.wiki.model.WikiNode;
182    import com.liferay.portlet.wiki.model.WikiNodeModel;
183    import com.liferay.portlet.wiki.model.WikiPage;
184    import com.liferay.portlet.wiki.model.WikiPageConstants;
185    import com.liferay.portlet.wiki.model.WikiPageModel;
186    import com.liferay.portlet.wiki.model.WikiPageResourceModel;
187    import com.liferay.portlet.wiki.model.impl.WikiNodeModelImpl;
188    import com.liferay.portlet.wiki.model.impl.WikiPageModelImpl;
189    import com.liferay.portlet.wiki.model.impl.WikiPageResourceModelImpl;
190    import com.liferay.portlet.wiki.social.WikiActivityKeys;
191    import com.liferay.util.SimpleCounter;
192    
193    import java.io.IOException;
194    import java.io.InputStream;
195    import java.io.InputStreamReader;
196    
197    import java.text.Format;
198    
199    import java.util.ArrayList;
200    import java.util.Collections;
201    import java.util.Date;
202    import java.util.HashMap;
203    import java.util.List;
204    import java.util.Map;
205    import java.util.Properties;
206    import java.util.TimeZone;
207    
208    import javax.portlet.PortletPreferences;
209    
210    /**
211     * @author Brian Wing Shun Chan
212     */
213    public class DataFactory {
214    
215            public DataFactory(Properties properties) throws Exception {
216                    initContext(properties);
217    
218                    _counter = new SimpleCounter(_maxGroupsCount + 1);
219                    _timeCounter = new SimpleCounter();
220                    _futureDateCounter = new SimpleCounter();
221                    _resourcePermissionCounter = new SimpleCounter();
222                    _socialActivityCounter = new SimpleCounter();
223                    _userScreenNameCounter = new SimpleCounter();
224    
225                    _classNameModels = new ArrayList<ClassNameModel>();
226    
227                    List<String> models = ModelHintsUtil.getModels();
228    
229                    for (String model : models) {
230                            ClassNameModel classNameModel = new ClassNameModelImpl();
231    
232                            long classNameId = _counter.get();
233    
234                            classNameModel.setClassNameId(classNameId);
235    
236                            classNameModel.setValue(model);
237    
238                            _classNameModels.add(classNameModel);
239    
240                            _classNameModelsMap.put(model, classNameId);
241                    }
242    
243                    _accountId = _counter.get();
244                    _companyId = _counter.get();
245                    _defaultUserId = _counter.get();
246                    _globalGroupId = _counter.get();
247                    _guestGroupId = _counter.get();
248                    _sampleUserId = _counter.get();
249    
250                    _dlDDMStructureContent = StringUtil.read(
251                            getResourceInputStream("ddm_structure_basic_document.xml"));
252                    _journalDDMStructureContent = StringUtil.read(
253                            getResourceInputStream("ddm_structure_basic_web_content.xml"));
254    
255                    String defaultAssetPublisherPreference = StringUtil.read(
256                            getResourceInputStream("default_asset_publisher_preference.xml"));
257    
258                    _defaultAssetPublisherPortletPreference =
259                            (PortletPreferencesImpl)_portletPreferencesFactory.fromDefaultXML(
260                                    defaultAssetPublisherPreference);
261    
262                    initAssetCategoryModels();
263                    initAssetTagModels();
264                    initCompanyModel();
265                    initDLFileEntryTypeModel();
266                    initGroupModels();
267    
268                    int maxJournalArticleSize = GetterUtil.getInteger(
269                            properties.getProperty("sample.sql.max.journal.article.size"));
270    
271                    initJournalArticleContent(maxJournalArticleSize);
272    
273                    initRoleModels();
274                    initUserNames();
275                    initUserModels();
276                    initVirtualHostModel(
277                            properties.getProperty("sample.sql.virtual.hostname"));
278            }
279    
280            public AccountModel getAccountModel() {
281                    return _accountModel;
282            }
283    
284            public RoleModel getAdministratorRoleModel() {
285                    return _administratorRoleModel;
286            }
287    
288            public List<Long> getAssetCategoryIds(long groupId) {
289                    SimpleCounter counter = _assetCategoryCounters.get(groupId);
290    
291                    if (counter == null) {
292                            counter = new SimpleCounter(0);
293    
294                            _assetCategoryCounters.put(groupId, counter);
295                    }
296    
297                    List<AssetCategoryModel> assetCategoryModels =
298                            _assetCategoryModelsArray[(int)groupId - 1];
299    
300                    if ((assetCategoryModels == null) || assetCategoryModels.isEmpty()) {
301                            return Collections.emptyList();
302                    }
303    
304                    List<Long> assetCategoryIds = new ArrayList<Long>(
305                            _maxAssetEntryToAssetCategoryCount);
306    
307                    for (int i = 0; i < _maxAssetEntryToAssetCategoryCount; i++) {
308                            int index = (int)counter.get() % assetCategoryModels.size();
309    
310                            AssetCategoryModel assetCategoryModel = assetCategoryModels.get(
311                                    index);
312    
313                            assetCategoryIds.add(assetCategoryModel.getCategoryId());
314                    }
315    
316                    return assetCategoryIds;
317            }
318    
319            public List<AssetCategoryModel> getAssetCategoryModels() {
320                    List<AssetCategoryModel> allAssetCategoryModels =
321                            new ArrayList<AssetCategoryModel>();
322    
323                    for (List<AssetCategoryModel> assetCategoryModels :
324                                    _assetCategoryModelsArray) {
325    
326                            allAssetCategoryModels.addAll(assetCategoryModels);
327                    }
328    
329                    return allAssetCategoryModels;
330            }
331    
332            public List<Long> getAssetTagIds(long groupId) {
333                    SimpleCounter counter = _assetTagCounters.get(groupId);
334    
335                    if (counter == null) {
336                            counter = new SimpleCounter(0);
337    
338                            _assetTagCounters.put(groupId, counter);
339                    }
340    
341                    List<AssetTagModel> assetTagModels =
342                            _assetTagModelsArray[(int)groupId - 1];
343    
344                    if ((assetTagModels == null) || assetTagModels.isEmpty()) {
345                            return Collections.emptyList();
346                    }
347    
348                    List<Long> assetTagIds = new ArrayList<Long>(
349                            _maxAssetEntryToAssetTagCount);
350    
351                    for (int i = 0; i < _maxAssetEntryToAssetTagCount; i++) {
352                            int index = (int)counter.get() % assetTagModels.size();
353    
354                            AssetTagModel assetTagModel = assetTagModels.get(index);
355    
356                            assetTagIds.add(assetTagModel.getTagId());
357                    }
358    
359                    return assetTagIds;
360            }
361    
362            public List<AssetTagModel> getAssetTagModels() {
363                    List<AssetTagModel> allAssetTagModels = new ArrayList<AssetTagModel>();
364    
365                    for (List<AssetTagModel> assetTagModels : _assetTagModelsArray) {
366                            allAssetTagModels.addAll(assetTagModels);
367                    }
368    
369                    return allAssetTagModels;
370            }
371    
372            public List<AssetTagStatsModel> getAssetTagStatsModels() {
373                    List<AssetTagStatsModel> allAssetTagStatsModels =
374                            new ArrayList<AssetTagStatsModel>();
375    
376                    for (List<AssetTagStatsModel> assetTagStatsModels :
377                                    _assetTagStatsModelsArray) {
378    
379                            allAssetTagStatsModels.addAll(assetTagStatsModels);
380                    }
381    
382                    return allAssetTagStatsModels;
383            }
384    
385            public List<AssetVocabularyModel> getAssetVocabularyModels() {
386                    List<AssetVocabularyModel> allAssetVocabularyModels =
387                            new ArrayList<AssetVocabularyModel>();
388    
389                    allAssetVocabularyModels.add(_defaultAssetVocabularyModel);
390    
391                    for (List<AssetVocabularyModel> assetVocabularyModels :
392                                    _assetVocabularyModelsArray) {
393    
394                            allAssetVocabularyModels.addAll(assetVocabularyModels);
395                    }
396    
397                    return allAssetVocabularyModels;
398            }
399    
400            public long getBlogsEntryClassNameId() {
401                    return _classNameModelsMap.get(BlogsEntry.class.getName());
402            }
403    
404            public long getClassNameId(String className) {
405                    return _classNameModelsMap.get(className);
406            }
407    
408            public List<ClassNameModel> getClassNameModels() {
409                    return _classNameModels;
410            }
411    
412            public CompanyModel getCompanyModel() {
413                    return _companyModel;
414            }
415    
416            public SimpleCounter getCounter() {
417                    return _counter;
418            }
419    
420            public long getCounterNext() {
421                    return _counter.get();
422            }
423    
424            public String getDateLong(Date date) {
425                    return String.valueOf(date.getTime());
426            }
427    
428            public String getDateString(Date date) {
429                    if (date == null) {
430                            return null;
431                    }
432    
433                    return _simpleDateFormat.format(date);
434            }
435    
436            public long getDDLRecordSetClassNameId() {
437                    return _classNameModelsMap.get(DDLRecordSet.class.getName());
438            }
439    
440            public long getDefaultDLDDMStructureId() {
441                    return _defaultDLDDMStructureModel.getStructureId();
442            }
443    
444            public DDMStructureModel getDefaultDLDDMStructureModel() {
445                    return _defaultDLDDMStructureModel;
446            }
447    
448            public DLFileEntryTypeModel getDefaultDLFileEntryTypeModel() {
449                    return _defaultDLFileEntryTypeModel;
450            }
451    
452            public DDMStructureModel getDefaultJournalDDMStructureModel() {
453                    return _defaultJournalDDMStructureModel;
454            }
455    
456            public DDMTemplateModel getDefaultJournalDDMTemplateModel() {
457                    return _defaultJournalDDMTemplateModel;
458            }
459    
460            public UserModel getDefaultUserModel() {
461                    return _defaultUserModel;
462            }
463    
464            public long getDLFileEntryClassNameId() {
465                    return _classNameModelsMap.get(DLFileEntry.class.getName());
466            }
467    
468            public GroupModel getGlobalGroupModel() {
469                    return _globalGroupModel;
470            }
471    
472            public long getGroupClassNameId() {
473                    return _classNameModelsMap.get(Group.class.getName());
474            }
475    
476            public List<GroupModel> getGroupModels() {
477                    return _groupModels;
478            }
479    
480            public GroupModel getGuestGroupModel() {
481                    return _guestGroupModel;
482            }
483    
484            public UserModel getGuestUserModel() {
485                    return _guestUserModel;
486            }
487    
488            public long getJournalArticleClassNameId() {
489                    return _classNameModelsMap.get(JournalArticle.class.getName());
490            }
491    
492            public String getJournalArticleLayoutColumn(String portletPrefix) {
493                    StringBundler sb = new StringBundler(3 * _maxJournalArticleCount);
494    
495                    for (int i = 1; i <= _maxJournalArticleCount; i++) {
496                            sb.append(portletPrefix);
497                            sb.append(i);
498                            sb.append(StringPool.COMMA);
499                    }
500    
501                    return sb.toString();
502            }
503    
504            public long getLayoutClassNameId() {
505                    return _classNameModelsMap.get(Layout.class.getName());
506            }
507    
508            public int getMaxAssetPublisherPageCount() {
509                    return _maxAssetPublisherPageCount;
510            }
511    
512            public int getMaxBlogsEntryCommentCount() {
513                    return _maxBlogsEntryCommentCount;
514            }
515    
516            public int getMaxDDLRecordCount() {
517                    return _maxDDLRecordCount;
518            }
519    
520            public int getMaxDDLRecordSetCount() {
521                    return _maxDDLRecordSetCount;
522            }
523    
524            public int getMaxDLFolderDepth() {
525                    return _maxDLFolderDepth;
526            }
527    
528            public int getMaxGroupCount() {
529                    return _maxGroupsCount;
530            }
531    
532            public int getMaxJournalArticleCount() {
533                    return _maxJournalArticleCount;
534            }
535    
536            public int getMaxJournalArticlePageCount() {
537                    return _maxJournalArticlePageCount;
538            }
539    
540            public int getMaxJournalArticleVersionCount() {
541                    return _maxJournalArticleVersionCount;
542            }
543    
544            public int getMaxWikiPageCommentCount() {
545                    return _maxWikiPageCommentCount;
546            }
547    
548            public List<Long> getNewUserGroupIds(long groupId) {
549                    List<Long> groupIds = new ArrayList<Long>(_maxUserToGroupCount + 1);
550    
551                    groupIds.add(_guestGroupModel.getGroupId());
552    
553                    if ((groupId + _maxUserToGroupCount) > _maxGroupsCount) {
554                            groupId = groupId - _maxUserToGroupCount + 1;
555                    }
556    
557                    for (int i = 0; i < _maxUserToGroupCount; i++) {
558                            groupIds.add(groupId + i);
559                    }
560    
561                    return groupIds;
562            }
563    
564            public RoleModel getPowerUserRoleModel() {
565                    return _powerUserRoleModel;
566            }
567    
568            public List<RoleModel> getRoleModels() {
569                    return _roleModels;
570            }
571    
572            public UserModel getSampleUserModel() {
573                    return _sampleUserModel;
574            }
575    
576            public List<Integer> getSequence(int size) {
577                    List<Integer> sequence = new ArrayList<Integer>(size);
578    
579                    for (int i = 1; i <= size; i++) {
580                            sequence.add(i);
581                    }
582    
583                    return sequence;
584            }
585    
586            public RoleModel getUserRoleModel() {
587                    return _userRoleModel;
588            }
589    
590            public VirtualHostModel getVirtualHostModel() {
591                    return _virtualHostModel;
592            }
593    
594            public long getWikiPageClassNameId() {
595                    return _classNameModelsMap.get(WikiPage.class.getName());
596            }
597    
598            public void initAssetCategoryModels() {
599                    _assetCategoryModelsArray =
600                            (List<AssetCategoryModel>[])new List<?>[_maxGroupsCount];
601                    _assetVocabularyModelsArray =
602                            (List<AssetVocabularyModel>[])new List<?>[_maxGroupsCount];
603                    _defaultAssetVocabularyModel = newAssetVocabularyModel(
604                            _globalGroupId, _defaultUserId, null,
605                            PropsValues.ASSET_VOCABULARY_DEFAULT);
606    
607                    StringBundler sb = new StringBundler(4);
608    
609                    for (int i = 1; i <= _maxGroupsCount; i++) {
610                            List<AssetVocabularyModel> assetVocabularyModels =
611                                    new ArrayList<AssetVocabularyModel>(_maxAssetVocabularyCount);
612                            List<AssetCategoryModel> assetCategoryModels =
613                                    new ArrayList<AssetCategoryModel>(
614                                            _maxAssetVocabularyCount * _maxAssetCategoryCount);
615    
616                            long lastRightCategoryId = 2;
617    
618                            for (int j = 0; j < _maxAssetVocabularyCount; j++) {
619                                    sb.setIndex(0);
620    
621                                    sb.append("TestVocabulary_");
622                                    sb.append(i);
623                                    sb.append(StringPool.UNDERLINE);
624                                    sb.append(j);
625    
626                                    AssetVocabularyModel assetVocabularyModel =
627                                            newAssetVocabularyModel(
628                                                    i, _sampleUserId, _SAMPLE_USER_NAME, sb.toString());
629    
630                                    assetVocabularyModels.add(assetVocabularyModel);
631    
632                                    for (int k = 0; k < _maxAssetCategoryCount; k++) {
633                                            sb.setIndex(0);
634    
635                                            sb.append("TestCategory_");
636                                            sb.append(assetVocabularyModel.getVocabularyId());
637                                            sb.append(StringPool.UNDERLINE);
638                                            sb.append(k);
639    
640                                            AssetCategoryModel assetCategoryModel =
641                                                    newAssetCategoryModel(
642                                                            i, lastRightCategoryId, sb.toString(),
643                                                            assetVocabularyModel.getVocabularyId());
644    
645                                            lastRightCategoryId += 2;
646    
647                                            assetCategoryModels.add(assetCategoryModel);
648                                    }
649                            }
650    
651                            _assetCategoryModelsArray[i - 1] = assetCategoryModels;
652                            _assetVocabularyModelsArray[i - 1] = assetVocabularyModels;
653                    }
654            }
655    
656            public void initAssetTagModels() {
657                    _assetTagModelsArray =
658                            (List<AssetTagModel>[])new List<?>[_maxGroupsCount];
659                    _assetTagStatsModelsArray =
660                            (List<AssetTagStatsModel>[])new List<?>[_maxGroupsCount];
661    
662                    for (int i = 1; i <= _maxGroupsCount; i++) {
663                            List<AssetTagModel> assetTagModels = new ArrayList<AssetTagModel>(
664                                    _maxAssetTagCount);
665                            List<AssetTagStatsModel> assetTagStatsModels =
666                                    new ArrayList<AssetTagStatsModel>(_maxAssetTagCount * 3);
667    
668                            for (int j = 0; j < _maxAssetTagCount; j++) {
669                                    AssetTagModel assetTagModel = new AssetTagModelImpl();
670    
671                                    assetTagModel.setTagId(_counter.get());
672                                    assetTagModel.setGroupId(i);
673                                    assetTagModel.setCompanyId(_companyId);
674                                    assetTagModel.setUserId(_sampleUserId);
675                                    assetTagModel.setUserName(_SAMPLE_USER_NAME);
676                                    assetTagModel.setCreateDate(new Date());
677                                    assetTagModel.setModifiedDate(new Date());
678                                    assetTagModel.setName("TestTag_" + i + "_" + j);
679    
680                                    assetTagModels.add(assetTagModel);
681    
682                                    AssetTagStatsModel assetTagStatsModel = newAssetTagStatsModel(
683                                            assetTagModel.getTagId(),
684                                            _classNameModelsMap.get(BlogsEntry.class.getName()));
685    
686                                    assetTagStatsModels.add(assetTagStatsModel);
687    
688                                    assetTagStatsModel = newAssetTagStatsModel(
689                                            assetTagModel.getTagId(),
690                                            _classNameModelsMap.get(JournalArticle.class.getName()));
691    
692                                    assetTagStatsModels.add(assetTagStatsModel);
693    
694                                    assetTagStatsModel = newAssetTagStatsModel(
695                                            assetTagModel.getTagId(),
696                                            _classNameModelsMap.get(WikiPage.class.getName()));
697    
698                                    assetTagStatsModels.add(assetTagStatsModel);
699                            }
700    
701                            _assetTagModelsArray[i - 1] = assetTagModels;
702                            _assetTagStatsModelsArray[i - 1] = assetTagStatsModels;
703                    }
704            }
705    
706            public void initCompanyModel() {
707                    _companyModel = new CompanyModelImpl();
708    
709                    _companyModel.setCompanyId(_companyId);
710                    _companyModel.setAccountId(_accountId);
711                    _companyModel.setWebId("liferay.com");
712                    _companyModel.setMx("liferay.com");
713                    _companyModel.setActive(true);
714    
715                    _accountModel = new AccountModelImpl();
716    
717                    _accountModel.setAccountId(_accountId);
718                    _accountModel.setCompanyId(_companyId);
719                    _accountModel.setCreateDate(new Date());
720                    _accountModel.setModifiedDate(new Date());
721                    _accountModel.setName("Liferay");
722                    _accountModel.setLegalName("Liferay, Inc.");
723            }
724    
725            public void initContext(Properties properties) {
726                    String timeZoneId = properties.getProperty("sample.sql.db.time.zone");
727    
728                    if (Validator.isNotNull(timeZoneId)) {
729                            TimeZone timeZone = TimeZone.getTimeZone(timeZoneId);
730    
731                            if (timeZone != null) {
732                                    TimeZone.setDefault(timeZone);
733    
734                                    _simpleDateFormat =
735                                            FastDateFormatFactoryUtil.getSimpleDateFormat(
736                                                    "yyyy-MM-dd HH:mm:ss", timeZone);
737                            }
738                    }
739    
740                    _assetPublisherQueryName = GetterUtil.getString(
741                            properties.getProperty("sample.sql.asset.publisher.query.name"));
742    
743                    if (!_assetPublisherQueryName.equals("assetCategories")) {
744                            _assetPublisherQueryName = "assetTags";
745                    }
746    
747                    _maxAssetCategoryCount = GetterUtil.getInteger(
748                            properties.getProperty("sample.sql.max.asset.category.count"));
749                    _maxAssetEntryToAssetCategoryCount = GetterUtil.getInteger(
750                            properties.getProperty(
751                                    "sample.sql.max.asset.entry.to.asset.category.count"));
752                    _maxAssetEntryToAssetTagCount = GetterUtil.getInteger(
753                            properties.getProperty(
754                                    "sample.sql.max.asset.entry.to.asset.tag.count"));
755                    _maxAssetPublisherPageCount = GetterUtil.getInteger(
756                            properties.getProperty(
757                                    "sample.sql.max.asset.publisher.page.count"));
758                    _maxAssetTagCount = GetterUtil.getInteger(
759                            properties.getProperty("sample.sql.max.asset.tag.count"));
760                    _maxAssetVocabularyCount = GetterUtil.getInteger(
761                            properties.getProperty("sample.sql.max.asset.vocabulary.count"));
762                    _maxBlogsEntryCommentCount = GetterUtil.getInteger(
763                            properties.getProperty("sample.sql.max.blogs.entry.comment.count"));
764                    _maxBlogsEntryCount = GetterUtil.getInteger(
765                            properties.getProperty("sample.sql.max.blogs.entry.count"));
766                    _maxDDLCustomFieldCount = GetterUtil.getInteger(
767                            properties.getProperty("sample.sql.max.ddl.custom.field.count"));
768                    _maxDDLRecordCount = GetterUtil.getInteger(
769                            properties.getProperty("sample.sql.max.ddl.record.count"));
770                    _maxDDLRecordSetCount = GetterUtil.getInteger(
771                            properties.getProperty("sample.sql.max.ddl.record.set.count"));
772                    _maxDLFileEntryCount = GetterUtil.getInteger(
773                            properties.getProperty("sample.sql.max.dl.file.entry.count"));
774                    _maxDLFileEntrySize = GetterUtil.getInteger(
775                            properties.getProperty("sample.sql.max.dl.file.entry.size"));
776                    _maxDLFolderCount = GetterUtil.getInteger(
777                            properties.getProperty("sample.sql.max.dl.folder.count"));
778                    _maxDLFolderDepth = GetterUtil.getInteger(
779                            properties.getProperty("sample.sql.max.dl.folder.depth"));
780                    _maxGroupsCount = GetterUtil.getInteger(
781                            properties.getProperty("sample.sql.max.group.count"));
782                    _maxJournalArticleCount = GetterUtil.getInteger(
783                            properties.getProperty("sample.sql.max.journal.article.count"));
784                    _maxJournalArticlePageCount = GetterUtil.getInteger(
785                            properties.getProperty(
786                                    "sample.sql.max.journal.article.page.count"));
787                    _maxJournalArticleVersionCount = GetterUtil.getInteger(
788                            properties.getProperty(
789                                    "sample.sql.max.journal.article.version.count"));
790                    _maxMBCategoryCount = GetterUtil.getInteger(
791                            properties.getProperty("sample.sql.max.mb.category.count"));
792                    _maxMBMessageCount = GetterUtil.getInteger(
793                            properties.getProperty("sample.sql.max.mb.message.count"));
794                    _maxMBThreadCount = GetterUtil.getInteger(
795                            properties.getProperty("sample.sql.max.mb.thread.count"));
796                    _maxUserCount = GetterUtil.getInteger(
797                            properties.getProperty("sample.sql.max.user.count"));
798                    _maxUserToGroupCount = GetterUtil.getInteger(
799                            properties.getProperty("sample.sql.max.user.to.group.count"));
800                    _maxWikiNodeCount = GetterUtil.getInteger(
801                            properties.getProperty("sample.sql.max.wiki.node.count"));
802                    _maxWikiPageCommentCount = GetterUtil.getInteger(
803                            properties.getProperty("sample.sql.max.wiki.page.comment.count"));
804                    _maxWikiPageCount = GetterUtil.getInteger(
805                            properties.getProperty("sample.sql.max.wiki.page.count"));
806            }
807    
808            public void initDLFileEntryTypeModel() {
809                    _defaultDLFileEntryTypeModel = new DLFileEntryTypeModelImpl();
810    
811                    _defaultDLFileEntryTypeModel.setUuid(SequentialUUID.generate());
812                    _defaultDLFileEntryTypeModel.setFileEntryTypeId(
813                            DLFileEntryTypeConstants.FILE_ENTRY_TYPE_ID_BASIC_DOCUMENT);
814                    _defaultDLFileEntryTypeModel.setCreateDate(nextFutureDate());
815                    _defaultDLFileEntryTypeModel.setModifiedDate(nextFutureDate());
816                    _defaultDLFileEntryTypeModel.setFileEntryTypeKey(
817                            StringUtil.toUpperCase(
818                                    DLFileEntryTypeConstants.NAME_BASIC_DOCUMENT));
819    
820                    StringBundler sb = new StringBundler(5);
821    
822                    sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><root ");
823                    sb.append("available-locales=\"en_US\" default-locale=\"en_US\">");
824                    sb.append("<name language-id=\"en_US\">");
825                    sb.append(DLFileEntryTypeConstants.NAME_BASIC_DOCUMENT);
826                    sb.append("</name></root>");
827    
828                    _defaultDLFileEntryTypeModel.setName(sb.toString());
829    
830                    _defaultDLDDMStructureModel = newDDMStructureModel(
831                            _globalGroupId, _defaultUserId, getDLFileEntryClassNameId(),
832                            RawMetadataProcessor.TIKA_RAW_METADATA, _dlDDMStructureContent);
833                    _defaultJournalDDMStructureModel = newDDMStructureModel(
834                            _globalGroupId, _defaultUserId, getJournalArticleClassNameId(),
835                            "BASIC-WEB-CONTENT", _journalDDMStructureContent);
836                    _defaultJournalDDMTemplateModel = newDDMTemplateModel(
837                            _globalGroupId, _defaultUserId,
838                            _defaultJournalDDMStructureModel.getStructureId());
839            }
840    
841            public void initGroupModels() throws Exception {
842                    long groupClassNameId = getGroupClassNameId();
843    
844                    _globalGroupModel = newGroupModel(
845                            _globalGroupId, _classNameModelsMap.get(Company.class.getName()),
846                            _companyId, GroupConstants.GLOBAL, false);
847    
848                    _guestGroupModel = newGroupModel(
849                            _guestGroupId, groupClassNameId, _guestGroupId,
850                            GroupConstants.GUEST, true);
851    
852                    _groupModels = new ArrayList<GroupModel>(_maxGroupsCount);
853    
854                    for (int i = 1; i <= _maxGroupsCount; i++) {
855                            GroupModel groupModel = newGroupModel(
856                                    i, groupClassNameId, i, "Site " + i, true);
857    
858                            _groupModels.add(groupModel);
859                    }
860            }
861    
862            public void initJournalArticleContent(int maxJournalArticleSize) {
863                    StringBundler sb = new StringBundler(5);
864    
865                    sb.append("<?xml version=\"1.0\"?><root available-locales=\"en_US\" ");
866                    sb.append("default-locale=\"en_US\"><dynamic-element name=\"content");
867                    sb.append("\" type=\"text_area\" index-type=\"keyword\" index=\"0\">");
868                    sb.append("<dynamic-content language-id=\"en_US\"><![CDATA[");
869    
870                    if (maxJournalArticleSize <= 0) {
871                            maxJournalArticleSize = 1;
872                    }
873    
874                    char[] chars = new char[maxJournalArticleSize];
875    
876                    for (int i = 0; i < maxJournalArticleSize; i++) {
877                            chars[i] = (char)(CharPool.LOWER_CASE_A + (i % 26));
878                    }
879    
880                    sb.append(new String(chars));
881    
882                    sb.append("]]></dynamic-content></dynamic-element></root>");
883    
884                    _journalArticleContent = sb.toString();
885            }
886    
887            public void initRoleModels() {
888                    _roleModels = new ArrayList<RoleModel>();
889    
890                    // Administrator
891    
892                    _administratorRoleModel = newRoleModel(
893                            RoleConstants.ADMINISTRATOR, RoleConstants.TYPE_REGULAR);
894    
895                    _roleModels.add(_administratorRoleModel);
896    
897                    // Guest
898    
899                    _guestRoleModel = newRoleModel(
900                            RoleConstants.GUEST, RoleConstants.TYPE_REGULAR);
901    
902                    _roleModels.add(_guestRoleModel);
903    
904                    // Organization Administrator
905    
906                    RoleModel organizationAdministratorRoleModel = newRoleModel(
907                            RoleConstants.ORGANIZATION_ADMINISTRATOR,
908                            RoleConstants.TYPE_ORGANIZATION);
909    
910                    _roleModels.add(organizationAdministratorRoleModel);
911    
912                    // Organization Owner
913    
914                    RoleModel organizationOwnerRoleModel = newRoleModel(
915                            RoleConstants.ORGANIZATION_OWNER, RoleConstants.TYPE_ORGANIZATION);
916    
917                    _roleModels.add(organizationOwnerRoleModel);
918    
919                    // Organization User
920    
921                    RoleModel organizationUserRoleModel = newRoleModel(
922                            RoleConstants.ORGANIZATION_USER, RoleConstants.TYPE_ORGANIZATION);
923    
924                    _roleModels.add(organizationUserRoleModel);
925    
926                    // Owner
927    
928                    _ownerRoleModel = newRoleModel(
929                            RoleConstants.OWNER, RoleConstants.TYPE_REGULAR);
930    
931                    _roleModels.add(_ownerRoleModel);
932    
933                    // Power User
934    
935                    _powerUserRoleModel = newRoleModel(
936                            RoleConstants.POWER_USER, RoleConstants.TYPE_REGULAR);
937    
938                    _roleModels.add(_powerUserRoleModel);
939    
940                    // Site Administrator
941    
942                    RoleModel siteAdministratorRoleModel = newRoleModel(
943                            RoleConstants.SITE_ADMINISTRATOR, RoleConstants.TYPE_SITE);
944    
945                    _roleModels.add(siteAdministratorRoleModel);
946    
947                    // Site Member
948    
949                    _siteMemberRoleModel = newRoleModel(
950                            RoleConstants.SITE_MEMBER, RoleConstants.TYPE_SITE);
951    
952                    _roleModels.add(_siteMemberRoleModel);
953    
954                    // Site Owner
955    
956                    RoleModel siteOwnerRoleModel = newRoleModel(
957                            RoleConstants.SITE_OWNER, RoleConstants.TYPE_SITE);
958    
959                    _roleModels.add(siteOwnerRoleModel);
960    
961                    // User
962    
963                    _userRoleModel = newRoleModel(
964                            RoleConstants.USER, RoleConstants.TYPE_REGULAR);
965    
966                    _roleModels.add(_userRoleModel);
967            }
968    
969            public void initUserModels() {
970                    _defaultUserModel = newUserModel(
971                            _defaultUserId, StringPool.BLANK, StringPool.BLANK,
972                            StringPool.BLANK, true);
973                    _guestUserModel = newUserModel(
974                            _counter.get(), "Test", "Test", "Test", false);
975                    _sampleUserModel = newUserModel(
976                            _sampleUserId, _SAMPLE_USER_NAME, _SAMPLE_USER_NAME,
977                            _SAMPLE_USER_NAME, false);
978            }
979    
980            public void initUserNames() throws IOException {
981                    _firstNames = new ArrayList<String>();
982    
983                    UnsyncBufferedReader unsyncBufferedReader = new UnsyncBufferedReader(
984                            new InputStreamReader(getResourceInputStream("first_names.txt")));
985    
986                    String line = null;
987    
988                    while ((line = unsyncBufferedReader.readLine()) != null) {
989                            _firstNames.add(line);
990                    }
991    
992                    unsyncBufferedReader.close();
993    
994                    _lastNames = new ArrayList<String>();
995    
996                    unsyncBufferedReader = new UnsyncBufferedReader(
997                            new InputStreamReader(getResourceInputStream("last_names.txt")));
998    
999                    while ((line = unsyncBufferedReader.readLine()) != null) {
1000                            _lastNames.add(line);
1001                    }
1002    
1003                    unsyncBufferedReader.close();
1004            }
1005    
1006            public void initVirtualHostModel(String hostname) {
1007                    _virtualHostModel = new VirtualHostModelImpl();
1008    
1009                    _virtualHostModel.setVirtualHostId(_counter.get());
1010                    _virtualHostModel.setCompanyId(_companyId);
1011                    _virtualHostModel.setHostname(hostname);
1012            }
1013    
1014            public AssetEntryModel newAssetEntryModel(BlogsEntryModel blogsEntryModel) {
1015                    return newAssetEntryModel(
1016                            blogsEntryModel.getGroupId(), blogsEntryModel.getCreateDate(),
1017                            blogsEntryModel.getModifiedDate(), getBlogsEntryClassNameId(),
1018                            blogsEntryModel.getEntryId(), blogsEntryModel.getUuid(), 0, true,
1019                            ContentTypes.TEXT_HTML, blogsEntryModel.getTitle());
1020            }
1021    
1022            public AssetEntryModel newAssetEntryModel(
1023                    DLFileEntryModel dLFileEntryModel) {
1024    
1025                    return newAssetEntryModel(
1026                            dLFileEntryModel.getGroupId(), dLFileEntryModel.getCreateDate(),
1027                            dLFileEntryModel.getModifiedDate(), getDLFileEntryClassNameId(),
1028                            dLFileEntryModel.getFileEntryId(), dLFileEntryModel.getUuid(),
1029                            dLFileEntryModel.getFileEntryTypeId(), true,
1030                            dLFileEntryModel.getMimeType(), dLFileEntryModel.getTitle());
1031            }
1032    
1033            public AssetEntryModel newAssetEntryModel(DLFolderModel dLFolderModel) {
1034                    return newAssetEntryModel(
1035                            dLFolderModel.getGroupId(), dLFolderModel.getCreateDate(),
1036                            dLFolderModel.getModifiedDate(),
1037                            _classNameModelsMap.get(DLFolder.class.getName()),
1038                            dLFolderModel.getFolderId(), dLFolderModel.getUuid(), 0, true, null,
1039                            dLFolderModel.getName());
1040            }
1041    
1042            public AssetEntryModel newAssetEntryModel(
1043                    JournalArticleModel journalArticleModel) {
1044    
1045                    long resourcePrimKey = journalArticleModel.getResourcePrimKey();
1046    
1047                    String resourceUuid = _journalArticleResourceUUIDs.get(resourcePrimKey);
1048    
1049                    return newAssetEntryModel(
1050                            journalArticleModel.getGroupId(),
1051                            journalArticleModel.getCreateDate(),
1052                            journalArticleModel.getModifiedDate(),
1053                            getJournalArticleClassNameId(), resourcePrimKey, resourceUuid,
1054                            _defaultJournalDDMStructureModel.getStructureId(), true,
1055                            ContentTypes.TEXT_HTML, journalArticleModel.getTitle());
1056            }
1057    
1058            public AssetEntryModel newAssetEntryModel(MBMessageModel mbMessageModel) {
1059                    long classNameId = 0;
1060                    boolean visible = false;
1061    
1062                    if (mbMessageModel.getCategoryId() ==
1063                                    MBCategoryConstants.DISCUSSION_CATEGORY_ID) {
1064    
1065                            classNameId = _classNameModelsMap.get(MBDiscussion.class.getName());
1066                    }
1067                    else {
1068                            classNameId = _classNameModelsMap.get(MBMessage.class.getName());
1069                            visible = true;
1070                    }
1071    
1072                    return newAssetEntryModel(
1073                            mbMessageModel.getGroupId(), mbMessageModel.getCreateDate(),
1074                            mbMessageModel.getModifiedDate(), classNameId,
1075                            mbMessageModel.getMessageId(), mbMessageModel.getUuid(), 0, visible,
1076                            ContentTypes.TEXT_HTML, mbMessageModel.getSubject());
1077            }
1078    
1079            public AssetEntryModel newAssetEntryModel(MBThreadModel mbThreadModel) {
1080                    return newAssetEntryModel(
1081                            mbThreadModel.getGroupId(), mbThreadModel.getCreateDate(),
1082                            mbThreadModel.getModifiedDate(),
1083                            _classNameModelsMap.get(MBThread.class.getName()),
1084                            mbThreadModel.getThreadId(), mbThreadModel.getUuid(), 0, false,
1085                            StringPool.BLANK, String.valueOf(mbThreadModel.getRootMessageId()));
1086            }
1087    
1088            public AssetEntryModel newAssetEntryModel(WikiPageModel wikiPageModel) {
1089                    return newAssetEntryModel(
1090                            wikiPageModel.getGroupId(), wikiPageModel.getCreateDate(),
1091                            wikiPageModel.getModifiedDate(), getWikiPageClassNameId(),
1092                            wikiPageModel.getResourcePrimKey(), wikiPageModel.getUuid(), 0,
1093                            true, ContentTypes.TEXT_HTML, wikiPageModel.getTitle());
1094            }
1095    
1096            public List<PortletPreferencesModel>
1097                    newAssetPublisherPortletPreferencesModels(long plid) {
1098    
1099                    List<PortletPreferencesModel> portletPreferencesModels =
1100                            new ArrayList<PortletPreferencesModel>(4);
1101    
1102                    portletPreferencesModels.add(
1103                            newPortletPreferencesModel(
1104                                    plid, PortletKeys.BLOGS, PortletConstants.DEFAULT_PREFERENCES));
1105                    portletPreferencesModels.add(
1106                            newPortletPreferencesModel(
1107                                    plid, PortletKeys.DOCKBAR,
1108                                    PortletConstants.DEFAULT_PREFERENCES));
1109                    portletPreferencesModels.add(
1110                            newPortletPreferencesModel(
1111                                    plid, PortletKeys.JOURNAL,
1112                                    PortletConstants.DEFAULT_PREFERENCES));
1113                    portletPreferencesModels.add(
1114                            newPortletPreferencesModel(
1115                                    plid, PortletKeys.WIKI, PortletConstants.DEFAULT_PREFERENCES));
1116    
1117                    return portletPreferencesModels;
1118            }
1119    
1120            public List<BlogsEntryModel> newBlogsEntryModels(long groupId) {
1121                    List<BlogsEntryModel> blogEntryModels = new ArrayList<BlogsEntryModel>(
1122                            _maxBlogsEntryCount);
1123    
1124                    for (int i = 1; i <= _maxBlogsEntryCount; i++) {
1125                            blogEntryModels.add(newBlogsEntryModel(groupId, i));
1126                    }
1127    
1128                    return blogEntryModels;
1129            }
1130    
1131            public BlogsStatsUserModel newBlogsStatsUserModel(long groupId) {
1132                    BlogsStatsUserModel blogsStatsUserModel = new BlogsStatsUserModelImpl();
1133    
1134                    blogsStatsUserModel.setStatsUserId(_counter.get());
1135                    blogsStatsUserModel.setGroupId(groupId);
1136                    blogsStatsUserModel.setCompanyId(_companyId);
1137                    blogsStatsUserModel.setUserId(_sampleUserId);
1138                    blogsStatsUserModel.setEntryCount(_maxBlogsEntryCount);
1139                    blogsStatsUserModel.setLastPostDate(new Date());
1140    
1141                    return blogsStatsUserModel;
1142            }
1143    
1144            public ContactModel newContactModel(UserModel userModel) {
1145                    ContactModel contactModel = new ContactModelImpl();
1146    
1147                    contactModel.setContactId(userModel.getContactId());
1148                    contactModel.setCompanyId(userModel.getCompanyId());
1149                    contactModel.setUserId(userModel.getUserId());
1150    
1151                    FullNameGenerator fullNameGenerator =
1152                            FullNameGeneratorFactory.getInstance();
1153    
1154                    String fullName = fullNameGenerator.getFullName(
1155                            userModel.getFirstName(), userModel.getMiddleName(),
1156                            userModel.getLastName());
1157    
1158                    contactModel.setUserName(fullName);
1159                    contactModel.setCreateDate(new Date());
1160                    contactModel.setModifiedDate(new Date());
1161                    contactModel.setClassNameId(
1162                            _classNameModelsMap.get(User.class.getName()));
1163                    contactModel.setClassPK(userModel.getUserId());
1164                    contactModel.setAccountId(_accountId);
1165                    contactModel.setParentContactId(
1166                            ContactConstants.DEFAULT_PARENT_CONTACT_ID);
1167                    contactModel.setEmailAddress(userModel.getEmailAddress());
1168                    contactModel.setFirstName(userModel.getFirstName());
1169                    contactModel.setLastName(userModel.getLastName());
1170                    contactModel.setMale(true);
1171                    contactModel.setBirthday(new Date());
1172    
1173                    return contactModel;
1174            }
1175    
1176            public List<CounterModel> newCounterModels() {
1177                    List<CounterModel> counterModels = new ArrayList<CounterModel>();
1178    
1179                    // Counter
1180    
1181                    CounterModel counterModel = new CounterModelImpl();
1182    
1183                    counterModel.setName(Counter.class.getName());
1184                    counterModel.setCurrentId(_counter.get());
1185    
1186                    counterModels.add(counterModel);
1187    
1188                    // ResourcePermission
1189    
1190                    counterModel = new CounterModelImpl();
1191    
1192                    counterModel.setName(ResourcePermission.class.getName());
1193                    counterModel.setCurrentId(_resourcePermissionCounter.get());
1194    
1195                    counterModels.add(counterModel);
1196    
1197                    // SocialActivity
1198    
1199                    counterModel = new CounterModelImpl();
1200    
1201                    counterModel.setName(SocialActivity.class.getName());
1202                    counterModel.setCurrentId(_socialActivityCounter.get());
1203    
1204                    counterModels.add(counterModel);
1205    
1206                    return counterModels;
1207            }
1208    
1209            public DDMStructureModel newDDLDDMStructureModel(long groupId) {
1210                    StringBundler sb = new StringBundler(3 + _maxDDLCustomFieldCount * 10);
1211    
1212                    sb.append("<?xml version=\"1.0\"?>");
1213                    sb.append(
1214                            "<root available-locales=\"en_US\" default-locale=\"en_US\">");
1215    
1216                    for (int i = 0; i < _maxDDLCustomFieldCount; i++) {
1217                            sb.append(
1218                                    "<dynamic-element dataType=\"string\" indexType=\"keyword\"");
1219                            sb.append(" name=\"");
1220                            sb.append(nextDDLCustomFieldName(groupId, i));
1221                            sb.append(
1222                                    "\" readOnly=\"false\" repeatable=\"false\" required=\"false");
1223                            sb.append(
1224                                    "\" showLabel=\"true\" type=\"text\" width=\"25\"><meta-data");
1225                            sb.append(" locale=\"en_US\"><entry name=\"label\"><![CDATA[Text");
1226                            sb.append(i);
1227                            sb.append(
1228                                    "]]></entry><entry name=\"predefinedValue\"><![CDATA[]]>");
1229                            sb.append("</entry><entry name=\"tip\"><![CDATA[]]></entry>");
1230                            sb.append("</meta-data></dynamic-element>");
1231                    }
1232    
1233                    sb.append("</root>");
1234    
1235                    return newDDMStructureModel(
1236                            groupId, _sampleUserId,
1237                            _classNameModelsMap.get(DDLRecordSet.class.getName()),
1238                            "Test DDM Structure", sb.toString());
1239            }
1240    
1241            public List<PortletPreferencesModel>
1242                    newDDLPortletPreferencesModels(long plid) {
1243    
1244                    List<PortletPreferencesModel> portletPreferencesModels =
1245                            new ArrayList<PortletPreferencesModel>(2);
1246    
1247                    portletPreferencesModels.add(
1248                            newPortletPreferencesModel(
1249                                    plid, PortletKeys.DOCKBAR,
1250                                    PortletConstants.DEFAULT_PREFERENCES));
1251                    portletPreferencesModels.add(
1252                            newPortletPreferencesModel(
1253                                    plid, PortletKeys.DYNAMIC_DATA_LIST_DISPLAY,
1254                                    PortletConstants.DEFAULT_PREFERENCES));
1255                    portletPreferencesModels.add(
1256                            newPortletPreferencesModel(
1257                                    plid, PortletKeys.DYNAMIC_DATA_LISTS,
1258                                    PortletConstants.DEFAULT_PREFERENCES));
1259                    portletPreferencesModels.add(
1260                            newPortletPreferencesModel(
1261                                    plid, PortletKeys.DYNAMIC_DATA_MAPPING,
1262                                    PortletConstants.DEFAULT_PREFERENCES));
1263    
1264                    return portletPreferencesModels;
1265            }
1266    
1267            public DDLRecordModel newDDLRecordModel(
1268                    DDLRecordSetModel dDLRecordSetModel) {
1269    
1270                    DDLRecordModel ddlRecordModel = new DDLRecordModelImpl();
1271    
1272                    ddlRecordModel.setUuid(SequentialUUID.generate());
1273                    ddlRecordModel.setRecordId(_counter.get());
1274                    ddlRecordModel.setGroupId(dDLRecordSetModel.getGroupId());
1275                    ddlRecordModel.setCompanyId(_companyId);
1276                    ddlRecordModel.setUserId(_sampleUserId);
1277                    ddlRecordModel.setUserName(_SAMPLE_USER_NAME);
1278                    ddlRecordModel.setVersionUserId(_sampleUserId);
1279                    ddlRecordModel.setVersionUserName(_SAMPLE_USER_NAME);
1280                    ddlRecordModel.setCreateDate(new Date());
1281                    ddlRecordModel.setModifiedDate(new Date());
1282                    ddlRecordModel.setDDMStorageId(_counter.get());
1283                    ddlRecordModel.setRecordSetId(dDLRecordSetModel.getRecordSetId());
1284                    ddlRecordModel.setVersion(DDLRecordConstants.VERSION_DEFAULT);
1285                    ddlRecordModel.setDisplayIndex(
1286                            DDLRecordConstants.DISPLAY_INDEX_DEFAULT);
1287    
1288                    return ddlRecordModel;
1289            }
1290    
1291            public DDLRecordSetModel newDDLRecordSetModel(
1292                    DDMStructureModel ddmStructureModel, int currentIndex) {
1293    
1294                    DDLRecordSetModel ddlRecordSetModel = new DDLRecordSetModelImpl();
1295    
1296                    ddlRecordSetModel.setUuid(SequentialUUID.generate());
1297                    ddlRecordSetModel.setRecordSetId(_counter.get());
1298                    ddlRecordSetModel.setGroupId(ddmStructureModel.getGroupId());
1299                    ddlRecordSetModel.setCompanyId(_companyId);
1300                    ddlRecordSetModel.setUserId(_sampleUserId);
1301                    ddlRecordSetModel.setUserName(_SAMPLE_USER_NAME);
1302                    ddlRecordSetModel.setCreateDate(new Date());
1303                    ddlRecordSetModel.setModifiedDate(new Date());
1304                    ddlRecordSetModel.setDDMStructureId(ddmStructureModel.getStructureId());
1305                    ddlRecordSetModel.setRecordSetKey(String.valueOf(_counter.get()));
1306    
1307                    StringBundler sb = new StringBundler(5);
1308    
1309                    sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><root ");
1310                    sb.append("available-locales=\"en_US\" default-locale=\"en_US\">");
1311                    sb.append("<name language-id=\"en_US\">Test DDL Record Set ");
1312                    sb.append(currentIndex);
1313                    sb.append("</name></root>");
1314    
1315                    ddlRecordSetModel.setName(sb.toString());
1316    
1317                    ddlRecordSetModel.setMinDisplayRows(
1318                            DDLRecordSetConstants.MIN_DISPLAY_ROWS_DEFAULT);
1319                    ddlRecordSetModel.setScope(
1320                            DDLRecordSetConstants.SCOPE_DYNAMIC_DATA_LISTS);
1321    
1322                    return ddlRecordSetModel;
1323            }
1324    
1325            public DDLRecordVersionModel newDDLRecordVersionModel(
1326                    DDLRecordModel dDLRecordModel) {
1327    
1328                    DDLRecordVersionModel ddlRecordVersionModel =
1329                            new DDLRecordVersionModelImpl();
1330    
1331                    ddlRecordVersionModel.setRecordVersionId(_counter.get());
1332                    ddlRecordVersionModel.setGroupId(dDLRecordModel.getGroupId());
1333                    ddlRecordVersionModel.setCompanyId(_companyId);
1334                    ddlRecordVersionModel.setUserId(_sampleUserId);
1335                    ddlRecordVersionModel.setUserName(_SAMPLE_USER_NAME);
1336                    ddlRecordVersionModel.setCreateDate(dDLRecordModel.getModifiedDate());
1337                    ddlRecordVersionModel.setDDMStorageId(dDLRecordModel.getDDMStorageId());
1338                    ddlRecordVersionModel.setRecordSetId(dDLRecordModel.getRecordSetId());
1339                    ddlRecordVersionModel.setRecordId(dDLRecordModel.getRecordId());
1340                    ddlRecordVersionModel.setVersion(dDLRecordModel.getVersion());
1341                    ddlRecordVersionModel.setDisplayIndex(dDLRecordModel.getDisplayIndex());
1342                    ddlRecordVersionModel.setStatus(WorkflowConstants.STATUS_APPROVED);
1343                    ddlRecordVersionModel.setStatusDate(dDLRecordModel.getModifiedDate());
1344    
1345                    return ddlRecordVersionModel;
1346            }
1347    
1348            public DDMContentModel newDDMContentModel(
1349                    DDLRecordModel ddlRecordModel, int currentIndex) {
1350    
1351                    StringBundler sb = new StringBundler(3 + _maxDDLCustomFieldCount * 10);
1352    
1353                    sb.append("<?xml version=\"1.0\"?><root>");
1354    
1355                    for (int i = 0; i < _maxDDLCustomFieldCount; i++) {
1356                            sb.append("<dynamic-element default-language-id=\"en_US\" name=\"");
1357                            sb.append(nextDDLCustomFieldName(ddlRecordModel.getGroupId(), i));
1358                            sb.append("\"><dynamic-content language-id=\"en_US\">");
1359                            sb.append("<![CDATA[Test Record ");
1360                            sb.append(currentIndex);
1361                            sb.append("]]></dynamic-content></dynamic-element>");
1362                    }
1363    
1364                    sb.append("<dynamic-element default-language-id=\"en_US\" name=\"_");
1365                    sb.append(
1366                            "fieldsDisplay\"><dynamic-content language-id=\"en_US\"><![CDATA[");
1367    
1368                    for (int i = 0; i < _maxDDLCustomFieldCount; i++) {
1369                            sb.append(nextDDLCustomFieldName(ddlRecordModel.getGroupId(), i));
1370                            sb.append(DDMImpl.INSTANCE_SEPARATOR);
1371                            sb.append(StringUtil.randomId());
1372                            sb.append(StringPool.COMMA);
1373                    }
1374    
1375                    sb.setStringAt(
1376                            "]]></dynamic-content></dynamic-element></root>", sb.index() - 1);
1377    
1378                    return newDDMContentModel(
1379                            ddlRecordModel.getDDMStorageId(), ddlRecordModel.getGroupId(),
1380                            sb.toString());
1381            }
1382    
1383            public DDMContentModel newDDMContentModel(
1384                    DLFileEntryModel dlFileEntryModel) {
1385    
1386                    StringBundler sb = new StringBundler(5);
1387    
1388                    sb.append("<?xml version=\"1.0\"?><root><dynamic-element ");
1389                    sb.append("name=\"CONTENT_TYPE\"><dynamic-content>");
1390                    sb.append("<![CDATA[text/plain]]></dynamic-content></dynamic-element>");
1391                    sb.append("<dynamic-element <![CDATA[ISO-8859-1]]></dynamic-content>");
1392                    sb.append("</dynamic-element></root>");
1393    
1394                    return newDDMContentModel(
1395                            _counter.get(), dlFileEntryModel.getGroupId(), sb.toString());
1396            }
1397    
1398            public DDMStorageLinkModel newDDMStorageLinkModel(
1399                    long ddmStorageLinkId, DDMContentModel ddmContentModel,
1400                    long structureId) {
1401    
1402                    DDMStorageLinkModel ddmStorageLinkModel = new DDMStorageLinkModelImpl();
1403    
1404                    ddmStorageLinkModel.setUuid(SequentialUUID.generate());
1405                    ddmStorageLinkModel.setStorageLinkId(ddmStorageLinkId);
1406                    ddmStorageLinkModel.setClassNameId(
1407                            _classNameModelsMap.get(DDMContent.class.getName()));
1408                    ddmStorageLinkModel.setClassPK(ddmContentModel.getContentId());
1409                    ddmStorageLinkModel.setStructureId(structureId);
1410    
1411                    return ddmStorageLinkModel;
1412            }
1413    
1414            public DDMStructureLinkModel newDDMStructureLinkModel(
1415                    DDLRecordSetModel ddlRecordSetModel) {
1416    
1417                    return newDDMStructureLinkModel(
1418                            _classNameModelsMap.get(DDLRecordSet.class.getName()),
1419                            ddlRecordSetModel.getRecordSetId(),
1420                            ddlRecordSetModel.getDDMStructureId());
1421            }
1422    
1423            public DDMStructureLinkModel newDDMStructureLinkModel(
1424                    DLFileEntryMetadataModel dLFileEntryMetadataModel) {
1425    
1426                    return newDDMStructureLinkModel(
1427                            _classNameModelsMap.get(DLFileEntryMetadata.class.getName()),
1428                            dLFileEntryMetadataModel.getFileEntryMetadataId(),
1429                            dLFileEntryMetadataModel.getDDMStructureId());
1430            }
1431    
1432            public DLFileEntryMetadataModel newDLFileEntryMetadataModel(
1433                    long ddmStorageLinkId, long ddmStructureId,
1434                    DLFileVersionModel dlFileVersionModel) {
1435    
1436                    DLFileEntryMetadataModel dlFileEntryMetadataModel =
1437                            new DLFileEntryMetadataModelImpl();
1438    
1439                    dlFileEntryMetadataModel.setUuid(SequentialUUID.generate());
1440                    dlFileEntryMetadataModel.setFileEntryMetadataId(_counter.get());
1441                    dlFileEntryMetadataModel.setDDMStorageId(ddmStorageLinkId);
1442                    dlFileEntryMetadataModel.setDDMStructureId(ddmStructureId);
1443                    dlFileEntryMetadataModel.setFileEntryTypeId(
1444                            dlFileVersionModel.getFileEntryTypeId());
1445                    dlFileEntryMetadataModel.setFileEntryId(
1446                            dlFileVersionModel.getFileEntryId());
1447                    dlFileEntryMetadataModel.setFileVersionId(
1448                            dlFileVersionModel.getFileVersionId());
1449    
1450                    return dlFileEntryMetadataModel;
1451            }
1452    
1453            public List<DLFileEntryModel> newDlFileEntryModels(
1454                    DLFolderModel dlFolerModel) {
1455    
1456                    List<DLFileEntryModel> dlFileEntryModels =
1457                            new ArrayList<DLFileEntryModel>(_maxDLFileEntryCount);
1458    
1459                    for (int i = 1; i <= _maxDLFileEntryCount; i++) {
1460                            dlFileEntryModels.add(newDlFileEntryModel(dlFolerModel, i));
1461                    }
1462    
1463                    return dlFileEntryModels;
1464            }
1465    
1466            public DLFileVersionModel newDLFileVersionModel(
1467                    DLFileEntryModel dlFileEntryModel) {
1468    
1469                    DLFileVersionModel dlFileVersionModel = new DLFileVersionModelImpl();
1470    
1471                    dlFileVersionModel.setUuid(SequentialUUID.generate());
1472                    dlFileVersionModel.setFileVersionId(_counter.get());
1473                    dlFileVersionModel.setGroupId(dlFileEntryModel.getGroupId());
1474                    dlFileVersionModel.setCompanyId(_companyId);
1475                    dlFileVersionModel.setUserId(_sampleUserId);
1476                    dlFileVersionModel.setUserName(_SAMPLE_USER_NAME);
1477                    dlFileVersionModel.setCreateDate(nextFutureDate());
1478                    dlFileVersionModel.setModifiedDate(nextFutureDate());
1479                    dlFileVersionModel.setRepositoryId(dlFileEntryModel.getRepositoryId());
1480                    dlFileVersionModel.setFolderId(dlFileEntryModel.getFolderId());
1481                    dlFileVersionModel.setFileEntryId(dlFileEntryModel.getFileEntryId());
1482                    dlFileVersionModel.setFileName(dlFileEntryModel.getFileName());
1483                    dlFileVersionModel.setExtension(dlFileEntryModel.getExtension());
1484                    dlFileVersionModel.setMimeType(dlFileEntryModel.getMimeType());
1485                    dlFileVersionModel.setTitle(dlFileEntryModel.getTitle());
1486                    dlFileVersionModel.setFileEntryTypeId(
1487                            dlFileEntryModel.getFileEntryTypeId());
1488                    dlFileVersionModel.setVersion(dlFileEntryModel.getVersion());
1489                    dlFileVersionModel.setSize(dlFileEntryModel.getSize());
1490    
1491                    return dlFileVersionModel;
1492            }
1493    
1494            public List<DLFolderModel> newDLFolderModels(
1495                    long groupId, long parentFolderId) {
1496    
1497                    List<DLFolderModel> dlFolderModels = new ArrayList<DLFolderModel>(
1498                            _maxDLFolderCount);
1499    
1500                    for (int i = 1; i <= _maxDLFolderCount; i++) {
1501                            dlFolderModels.add(newDLFolderModel(groupId, parentFolderId, i));
1502                    }
1503    
1504                    return dlFolderModels;
1505            }
1506    
1507            public GroupModel newGroupModel(UserModel userModel) throws Exception {
1508                    return newGroupModel(
1509                            _counter.get(), _classNameModelsMap.get(User.class.getName()),
1510                            userModel.getUserId(), userModel.getScreenName(), false);
1511            }
1512    
1513            public IntegerWrapper newInteger() {
1514                    return new IntegerWrapper();
1515            }
1516    
1517            public JournalArticleModel newJournalArticleModel(
1518                    JournalArticleResourceModel journalArticleResourceModel,
1519                    int articleIndex, int versionIndex) {
1520    
1521                    JournalArticleModel journalArticleModel = new JournalArticleModelImpl();
1522    
1523                    journalArticleModel.setUuid(SequentialUUID.generate());
1524                    journalArticleModel.setId(_counter.get());
1525                    journalArticleModel.setResourcePrimKey(
1526                            journalArticleResourceModel.getResourcePrimKey());
1527                    journalArticleModel.setGroupId(
1528                            journalArticleResourceModel.getGroupId());
1529                    journalArticleModel.setCompanyId(_companyId);
1530                    journalArticleModel.setUserId(_sampleUserId);
1531                    journalArticleModel.setUserName(_SAMPLE_USER_NAME);
1532                    journalArticleModel.setCreateDate(new Date());
1533                    journalArticleModel.setModifiedDate(new Date());
1534                    journalArticleModel.setClassNameId(
1535                            JournalArticleConstants.CLASSNAME_ID_DEFAULT);
1536                    journalArticleModel.setArticleId(
1537                            journalArticleResourceModel.getArticleId());
1538                    journalArticleModel.setVersion(versionIndex);
1539    
1540                    StringBundler sb = new StringBundler(4);
1541    
1542                    sb.append("TestJournalArticle_");
1543                    sb.append(articleIndex);
1544                    sb.append(StringPool.UNDERLINE);
1545                    sb.append(versionIndex);
1546    
1547                    String urlTitle = sb.toString();
1548    
1549                    sb = new StringBundler(5);
1550    
1551                    sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><root ");
1552                    sb.append("available-locales=\"en_US\" default-locale=\"en_US\">");
1553                    sb.append("<Title language-id=\"en_US\">");
1554                    sb.append(urlTitle);
1555                    sb.append("</Title></root>");
1556    
1557                    String title = sb.toString();
1558    
1559                    journalArticleModel.setTitle(title);
1560                    journalArticleModel.setUrlTitle(urlTitle);
1561    
1562                    journalArticleModel.setContent(_journalArticleContent);
1563                    journalArticleModel.setType("general");
1564                    journalArticleModel.setStructureId(
1565                            _defaultJournalDDMStructureModel.getStructureKey());
1566                    journalArticleModel.setTemplateId(
1567                            _defaultJournalDDMTemplateModel.getTemplateKey());
1568                    journalArticleModel.setDisplayDate(new Date());
1569                    journalArticleModel.setExpirationDate(nextFutureDate());
1570                    journalArticleModel.setReviewDate(new Date());
1571                    journalArticleModel.setIndexable(true);
1572                    journalArticleModel.setStatusDate(new Date());
1573    
1574                    return journalArticleModel;
1575            }
1576    
1577            public JournalArticleResourceModel newJournalArticleResourceModel(
1578                    long groupId) {
1579    
1580                    JournalArticleResourceModel journalArticleResourceModel =
1581                            new JournalArticleResourceModelImpl();
1582    
1583                    journalArticleResourceModel.setUuid(SequentialUUID.generate());
1584                    journalArticleResourceModel.setResourcePrimKey(_counter.get());
1585                    journalArticleResourceModel.setGroupId(groupId);
1586                    journalArticleResourceModel.setArticleId(
1587                            String.valueOf(_counter.get()));
1588    
1589                    _journalArticleResourceUUIDs.put(
1590                            journalArticleResourceModel.getPrimaryKey(),
1591                            journalArticleResourceModel.getUuid());
1592    
1593                    return journalArticleResourceModel;
1594            }
1595    
1596            public JournalContentSearchModel newJournalContentSearchModel(
1597                    JournalArticleModel journalArticleModel, long layoutId) {
1598    
1599                    JournalContentSearchModel journalContentSearchModel =
1600                            new JournalContentSearchModelImpl();
1601    
1602                    journalContentSearchModel.setContentSearchId(_counter.get());
1603                    journalContentSearchModel.setGroupId(journalArticleModel.getGroupId());
1604                    journalContentSearchModel.setCompanyId(_companyId);
1605                    journalContentSearchModel.setLayoutId(layoutId);
1606                    journalContentSearchModel.setPortletId(PortletKeys.JOURNAL_CONTENT);
1607                    journalContentSearchModel.setArticleId(
1608                            journalArticleModel.getArticleId());
1609    
1610                    return journalContentSearchModel;
1611            }
1612    
1613            public List<PortletPreferencesModel>
1614                    newJournalPortletPreferencesModels(long plid) {
1615    
1616                    List<PortletPreferencesModel> portletPreferencesModels =
1617                            new ArrayList<PortletPreferencesModel>(2);
1618    
1619                    portletPreferencesModels.add(
1620                            newPortletPreferencesModel(
1621                                    plid, PortletKeys.DOCKBAR,
1622                                    PortletConstants.DEFAULT_PREFERENCES));
1623                    portletPreferencesModels.add(
1624                            newPortletPreferencesModel(
1625                                    plid, PortletKeys.JOURNAL,
1626                                    PortletConstants.DEFAULT_PREFERENCES));
1627    
1628                    return portletPreferencesModels;
1629            }
1630    
1631            public LayoutFriendlyURLModel newLayoutFriendlyURLModel(
1632                    LayoutModel layoutModel) {
1633    
1634                    LayoutFriendlyURLModel layoutFriendlyURLModel =
1635                            new LayoutFriendlyURLModelImpl();
1636    
1637                    layoutFriendlyURLModel.setUuid(SequentialUUID.generate());
1638                    layoutFriendlyURLModel.setLayoutFriendlyURLId(_counter.get());
1639                    layoutFriendlyURLModel.setGroupId(layoutModel.getGroupId());
1640                    layoutFriendlyURLModel.setCompanyId(_companyId);
1641                    layoutFriendlyURLModel.setUserId(_sampleUserId);
1642                    layoutFriendlyURLModel.setUserName(_SAMPLE_USER_NAME);
1643                    layoutFriendlyURLModel.setCreateDate(new Date());
1644                    layoutFriendlyURLModel.setModifiedDate(new Date());
1645                    layoutFriendlyURLModel.setPlid(layoutModel.getPlid());
1646                    layoutFriendlyURLModel.setFriendlyURL(layoutModel.getFriendlyURL());
1647                    layoutFriendlyURLModel.setLanguageId("en_US");
1648    
1649                    return layoutFriendlyURLModel;
1650            }
1651    
1652            public LayoutModel newLayoutModel(
1653                    long groupId, String name, String column1, String column2) {
1654    
1655                    SimpleCounter simpleCounter = _layoutCounters.get(groupId);
1656    
1657                    if (simpleCounter == null) {
1658                            simpleCounter = new SimpleCounter();
1659    
1660                            _layoutCounters.put(groupId, simpleCounter);
1661                    }
1662    
1663                    LayoutModel layoutModel = new LayoutModelImpl();
1664    
1665                    layoutModel.setUuid(SequentialUUID.generate());
1666                    layoutModel.setPlid(_counter.get());
1667                    layoutModel.setGroupId(groupId);
1668                    layoutModel.setCompanyId(_companyId);
1669                    layoutModel.setUserId(_sampleUserId);
1670                    layoutModel.setUserName(_SAMPLE_USER_NAME);
1671                    layoutModel.setCreateDate(new Date());
1672                    layoutModel.setModifiedDate(new Date());
1673                    layoutModel.setLayoutId(simpleCounter.get());
1674                    layoutModel.setName(
1675                            "<?xml version=\"1.0\"?><root><name>" + name + "</name></root>");
1676                    layoutModel.setType(LayoutConstants.TYPE_PORTLET);
1677                    layoutModel.setFriendlyURL(StringPool.FORWARD_SLASH + name);
1678    
1679                    UnicodeProperties typeSettingsProperties = new UnicodeProperties(true);
1680    
1681                    typeSettingsProperties.setProperty(
1682                            LayoutTypePortletConstants.LAYOUT_TEMPLATE_ID, "2_columns_ii");
1683                    typeSettingsProperties.setProperty("column-1", column1);
1684                    typeSettingsProperties.setProperty("column-2", column2);
1685    
1686                    String typeSettings = StringUtil.replace(
1687                            typeSettingsProperties.toString(), "\n", "\\n");
1688    
1689                    layoutModel.setTypeSettings(typeSettings);
1690    
1691                    return layoutModel;
1692            }
1693    
1694            public List<LayoutSetModel> newLayoutSetModels(
1695                    long groupId, int publicLayoutSetPageCount) {
1696    
1697                    List<LayoutSetModel> layoutSetModels = new ArrayList<LayoutSetModel>(2);
1698    
1699                    layoutSetModels.add(newLayoutSetModel(groupId, true, 0));
1700                    layoutSetModels.add(
1701                            newLayoutSetModel(groupId, false, publicLayoutSetPageCount));
1702    
1703                    return layoutSetModels;
1704            }
1705    
1706            public List<MBCategoryModel> newMBCategoryModels(long groupId) {
1707                    List<MBCategoryModel> mbCategoryModels = new ArrayList<MBCategoryModel>(
1708                            _maxMBCategoryCount);
1709    
1710                    for (int i = 1; i <= _maxMBCategoryCount; i++) {
1711                            mbCategoryModels.add(newMBCategoryModel(groupId, i));
1712                    }
1713    
1714                    return mbCategoryModels;
1715            }
1716    
1717            public MBDiscussionModel newMBDiscussionModel(
1718                    long groupId, long classNameId, long classPK, long threadId) {
1719    
1720                    MBDiscussionModel mbDiscussionModel = new MBDiscussionModelImpl();
1721    
1722                    mbDiscussionModel.setUuid(SequentialUUID.generate());
1723                    mbDiscussionModel.setDiscussionId(_counter.get());
1724                    mbDiscussionModel.setGroupId(groupId);
1725                    mbDiscussionModel.setCompanyId(_companyId);
1726                    mbDiscussionModel.setUserId(_sampleUserId);
1727                    mbDiscussionModel.setUserName(_SAMPLE_USER_NAME);
1728                    mbDiscussionModel.setCreateDate(new Date());
1729                    mbDiscussionModel.setModifiedDate(new Date());
1730                    mbDiscussionModel.setClassNameId(classNameId);
1731                    mbDiscussionModel.setClassPK(classPK);
1732                    mbDiscussionModel.setThreadId(threadId);
1733    
1734                    return mbDiscussionModel;
1735            }
1736    
1737            public MBMailingListModel newMBMailingListModel(
1738                    MBCategoryModel mbCategoryModel) {
1739    
1740                    MBMailingListModel mbMailingListModel = new MBMailingListModelImpl();
1741    
1742                    mbMailingListModel.setUuid(SequentialUUID.generate());
1743                    mbMailingListModel.setMailingListId(_counter.get());
1744                    mbMailingListModel.setGroupId(mbCategoryModel.getGroupId());
1745                    mbMailingListModel.setCompanyId(_companyId);
1746                    mbMailingListModel.setUserId(_sampleUserId);
1747                    mbMailingListModel.setUserName(_SAMPLE_USER_NAME);
1748                    mbMailingListModel.setCreateDate(new Date());
1749                    mbMailingListModel.setModifiedDate(new Date());
1750                    mbMailingListModel.setCategoryId(mbCategoryModel.getCategoryId());
1751                    mbMailingListModel.setInProtocol("pop3");
1752                    mbMailingListModel.setInServerPort(110);
1753                    mbMailingListModel.setInUserName(_sampleUserModel.getEmailAddress());
1754                    mbMailingListModel.setInPassword(_sampleUserModel.getPassword());
1755                    mbMailingListModel.setInReadInterval(5);
1756                    mbMailingListModel.setOutServerPort(25);
1757    
1758                    return mbMailingListModel;
1759            }
1760    
1761            public MBMessageModel newMBMessageModel(
1762                    MBThreadModel mbThreadModel, long classNameId, long classPK,
1763                    int index) {
1764    
1765                    long messageId = 0;
1766                    long parentMessageId = 0;
1767                    String subject = null;
1768                    String body = null;
1769    
1770                    if (index == 0) {
1771                            messageId = mbThreadModel.getRootMessageId();
1772                            parentMessageId = MBMessageConstants.DEFAULT_PARENT_MESSAGE_ID;
1773                            subject = String.valueOf(classPK);
1774                            body = String.valueOf(classPK);
1775                    }
1776                    else {
1777                            messageId = _counter.get();
1778                            parentMessageId = mbThreadModel.getRootMessageId();
1779                            subject = "N/A";
1780                            body = "This is test comment " + index + ".";
1781                    }
1782    
1783                    return newMBMessageModel(
1784                            mbThreadModel.getGroupId(), classNameId, classPK,
1785                            MBCategoryConstants.DISCUSSION_CATEGORY_ID,
1786                            mbThreadModel.getThreadId(), messageId,
1787                            mbThreadModel.getRootMessageId(), parentMessageId, subject, body);
1788            }
1789    
1790            public List<MBMessageModel> newMBMessageModels(
1791                    MBThreadModel mbThreadModel) {
1792    
1793                    List<MBMessageModel> mbMessageModels = new ArrayList<MBMessageModel>(
1794                            _maxMBMessageCount);
1795    
1796                    mbMessageModels.add(
1797                            newMBMessageModel(
1798                                    mbThreadModel.getGroupId(), 0, 0, mbThreadModel.getCategoryId(),
1799                                    mbThreadModel.getThreadId(), mbThreadModel.getRootMessageId(),
1800                                    mbThreadModel.getRootMessageId(),
1801                                    MBMessageConstants.DEFAULT_PARENT_MESSAGE_ID, "Test Message 1",
1802                                    "This is test message 1."));
1803    
1804                    for (int i = 2; i <= _maxMBMessageCount; i++) {
1805                            mbMessageModels.add(
1806                                    newMBMessageModel(
1807                                            mbThreadModel.getGroupId(), 0, 0,
1808                                            mbThreadModel.getCategoryId(), mbThreadModel.getThreadId(),
1809                                            _counter.get(), mbThreadModel.getRootMessageId(),
1810                                            mbThreadModel.getRootMessageId(), "Test Message " + i,
1811                                            "This is test message " + i + "."));
1812                    }
1813    
1814                    return mbMessageModels;
1815            }
1816    
1817            public List<MBMessageModel> newMBMessageModels(
1818                    MBThreadModel mbThreadModel, long classNameId, long classPK,
1819                    int maxMessageCount) {
1820    
1821                    List<MBMessageModel> mbMessageModels = new ArrayList<MBMessageModel>(
1822                            maxMessageCount);
1823    
1824                    for (int i = 1; i <= maxMessageCount; i++) {
1825                            mbMessageModels.add(
1826                                    newMBMessageModel(mbThreadModel, classNameId, classPK, i));
1827                    }
1828    
1829                    return mbMessageModels;
1830            }
1831    
1832            public MBStatsUserModel newMBStatsUserModel(long groupId) {
1833                    MBStatsUserModel mbStatsUserModel = new MBStatsUserModelImpl();
1834    
1835                    mbStatsUserModel.setStatsUserId(_counter.get());
1836                    mbStatsUserModel.setGroupId(groupId);
1837                    mbStatsUserModel.setUserId(_sampleUserId);
1838                    mbStatsUserModel.setMessageCount(
1839                            _maxMBCategoryCount * _maxMBThreadCount * _maxMBMessageCount);
1840                    mbStatsUserModel.setLastPostDate(new Date());
1841    
1842                    return mbStatsUserModel;
1843            }
1844    
1845            public MBThreadFlagModel newMBThreadFlagModel(MBThreadModel mbThreadModel) {
1846                    MBThreadFlagModel mbThreadFlagModel = new MBThreadFlagModelImpl();
1847    
1848                    mbThreadFlagModel.setUuid(SequentialUUID.generate());
1849                    mbThreadFlagModel.setThreadFlagId(_counter.get());
1850                    mbThreadFlagModel.setGroupId(mbThreadModel.getGroupId());
1851                    mbThreadFlagModel.setCompanyId(_companyId);
1852                    mbThreadFlagModel.setUserId(_sampleUserId);
1853                    mbThreadFlagModel.setUserName(_SAMPLE_USER_NAME);
1854                    mbThreadFlagModel.setCreateDate(new Date());
1855                    mbThreadFlagModel.setModifiedDate(new Date());
1856                    mbThreadFlagModel.setThreadId(mbThreadModel.getThreadId());
1857    
1858                    return mbThreadFlagModel;
1859            }
1860    
1861            public MBThreadModel newMBThreadModel(
1862                    long threadId, long groupId, long rootMessageId, int messageCount) {
1863    
1864                    if (messageCount == 0) {
1865                            messageCount = 1;
1866                    }
1867    
1868                    return newMBThreadModel(
1869                            threadId, groupId, MBCategoryConstants.DISCUSSION_CATEGORY_ID,
1870                            rootMessageId, messageCount);
1871            }
1872    
1873            public List<MBThreadModel> newMBThreadModels(
1874                    MBCategoryModel mbCategoryModel) {
1875    
1876                    List<MBThreadModel> mbThreadModels = new ArrayList<MBThreadModel>(
1877                            _maxMBThreadCount);
1878    
1879                    for (int i = 0; i < _maxMBThreadCount; i++) {
1880                            mbThreadModels.add(
1881                                    newMBThreadModel(
1882                                            _counter.get(), mbCategoryModel.getGroupId(),
1883                                            mbCategoryModel.getCategoryId(), _counter.get(),
1884                                            _maxMBMessageCount));
1885                    }
1886    
1887                    return mbThreadModels;
1888            }
1889    
1890            public PortletPreferencesModel newPortletPreferencesModel(
1891                            long plid, long groupId, String portletId, int currentIndex)
1892                    throws Exception {
1893    
1894                    if (currentIndex == 1) {
1895                            return newPortletPreferencesModel(
1896                                    plid, portletId, PortletConstants.DEFAULT_PREFERENCES);
1897                    }
1898    
1899                    SimpleCounter counter = _assetPublisherQueryCounter.get(groupId);
1900    
1901                    if (counter == null) {
1902                            counter = new SimpleCounter(0);
1903    
1904                            _assetPublisherQueryCounter.put(groupId, counter);
1905                    }
1906    
1907                    String[] assetPublisherQueryValues = null;
1908    
1909                    if (_assetPublisherQueryName.equals("assetCategories")) {
1910                            List<AssetCategoryModel> assetCategoryModels =
1911                                    _assetCategoryModelsArray[(int)groupId - 1];
1912    
1913                            if ((assetCategoryModels == null) ||
1914                                    assetCategoryModels.isEmpty()) {
1915    
1916                                    return newPortletPreferencesModel(
1917                                            plid, portletId, PortletConstants.DEFAULT_PREFERENCES);
1918                            }
1919    
1920                            assetPublisherQueryValues =
1921                                    getAssetPublisherAssetCategoriesQueryValues(
1922                                            assetCategoryModels, (int)counter.get());
1923                    }
1924                    else {
1925                            List<AssetTagModel> assetTagModels =
1926                                    _assetTagModelsArray[(int)groupId - 1];
1927    
1928                            if ((assetTagModels == null) || assetTagModels.isEmpty()) {
1929                                    return newPortletPreferencesModel(
1930                                            plid, portletId, PortletConstants.DEFAULT_PREFERENCES);
1931                            }
1932    
1933                            assetPublisherQueryValues = getAssetPublisherAssetTagsQueryValues(
1934                                    assetTagModels, (int)counter.get());
1935                    }
1936    
1937                    PortletPreferences jxPortletPreferences =
1938                            (PortletPreferences)_defaultAssetPublisherPortletPreference.clone();
1939    
1940                    jxPortletPreferences.setValue("queryAndOperator0", "false");
1941                    jxPortletPreferences.setValue("queryContains0", "true");
1942                    jxPortletPreferences.setValue("queryName0", _assetPublisherQueryName);
1943                    jxPortletPreferences.setValues(
1944                            "queryValues0",
1945                            new String[] {
1946                                    assetPublisherQueryValues[0], assetPublisherQueryValues[1],
1947                                    assetPublisherQueryValues[2]
1948                            });
1949                    jxPortletPreferences.setValue("queryAndOperator1", "false");
1950                    jxPortletPreferences.setValue("queryContains1", "false");
1951                    jxPortletPreferences.setValue("queryName1", _assetPublisherQueryName);
1952                    jxPortletPreferences.setValue(
1953                            "queryValues1", assetPublisherQueryValues[3]);
1954    
1955                    return newPortletPreferencesModel(
1956                            plid, portletId,
1957                            _portletPreferencesFactory.toXML(jxPortletPreferences));
1958            }
1959    
1960            public PortletPreferencesModel newPortletPreferencesModel(
1961                            long plid, String portletId, DDLRecordSetModel ddlRecordSetModel)
1962                    throws Exception {
1963    
1964                    PortletPreferences jxPortletPreferences = new PortletPreferencesImpl();
1965    
1966                    jxPortletPreferences.setValue("editable", "true");
1967                    jxPortletPreferences.setValue(
1968                            "recordSetId", String.valueOf(ddlRecordSetModel.getRecordSetId()));
1969                    jxPortletPreferences.setValue("spreadsheet", "false");
1970    
1971                    return newPortletPreferencesModel(
1972                            plid, portletId,
1973                            _portletPreferencesFactory.toXML(jxPortletPreferences));
1974            }
1975    
1976            public PortletPreferencesModel newPortletPreferencesModel(
1977                            long plid, String portletId,
1978                            JournalArticleResourceModel journalArticleResourceModel)
1979                    throws Exception {
1980    
1981                    PortletPreferences jxPortletPreferences = new PortletPreferencesImpl();
1982    
1983                    jxPortletPreferences.setValue(
1984                            "articleId", journalArticleResourceModel.getArticleId());
1985                    jxPortletPreferences.setValue(
1986                            "groupId",
1987                            String.valueOf(journalArticleResourceModel.getGroupId()));
1988    
1989                    return newPortletPreferencesModel(
1990                            plid, portletId,
1991                            _portletPreferencesFactory.toXML(jxPortletPreferences));
1992            }
1993    
1994            public List<LayoutModel> newPublicLayoutModels(long groupId) {
1995                    List<LayoutModel> layoutModels = new ArrayList<LayoutModel>();
1996    
1997                    layoutModels.add(newLayoutModel(groupId, "welcome", "58,", "47,"));
1998                    layoutModels.add(newLayoutModel(groupId, "blogs", "", "33,"));
1999                    layoutModels.add(
2000                            newLayoutModel(groupId, "document_library", "", "20,"));
2001                    layoutModels.add(newLayoutModel(groupId, "forums", "", "19,"));
2002                    layoutModels.add(newLayoutModel(groupId, "wiki", "", "36,"));
2003    
2004                    return layoutModels;
2005            }
2006    
2007            public List<ResourcePermissionModel> newResourcePermissionModels(
2008                    AssetCategoryModel assetCategoryModel) {
2009    
2010                    return newResourcePermissionModels(
2011                            AssetCategory.class.getName(),
2012                            String.valueOf(assetCategoryModel.getCategoryId()), _sampleUserId);
2013            }
2014    
2015            public List<ResourcePermissionModel> newResourcePermissionModels(
2016                    AssetTagModel assetTagModel) {
2017    
2018                    return newResourcePermissionModels(
2019                            AssetTag.class.getName(), String.valueOf(assetTagModel.getTagId()),
2020                            _sampleUserId);
2021            }
2022    
2023            public List<ResourcePermissionModel> newResourcePermissionModels(
2024                    AssetVocabularyModel assetVocabularyModel) {
2025    
2026                    if (assetVocabularyModel.getUserId() == _defaultUserId) {
2027                            List<ResourcePermissionModel> resourcePermissionModels =
2028                                    new ArrayList<ResourcePermissionModel>(1);
2029    
2030                            resourcePermissionModels.add(
2031                                    newResourcePermissionModel(
2032                                            AssetVocabulary.class.getName(),
2033                                            String.valueOf(assetVocabularyModel.getVocabularyId()),
2034                                            _ownerRoleModel.getRoleId(), _defaultUserId));
2035    
2036                            return resourcePermissionModels;
2037                    }
2038    
2039                    return newResourcePermissionModels(
2040                            AssetVocabulary.class.getName(),
2041                            String.valueOf(assetVocabularyModel.getVocabularyId()),
2042                            _sampleUserId);
2043            }
2044    
2045            public List<ResourcePermissionModel> newResourcePermissionModels(
2046                    BlogsEntryModel blogsEntryModel) {
2047    
2048                    return newResourcePermissionModels(
2049                            BlogsEntry.class.getName(),
2050                            String.valueOf(blogsEntryModel.getEntryId()), _sampleUserId);
2051            }
2052    
2053            public List<ResourcePermissionModel> newResourcePermissionModels(
2054                    DDLRecordSetModel ddlRecordSetModel) {
2055    
2056                    List<ResourcePermissionModel> resourcePermissionModels =
2057                            new ArrayList<ResourcePermissionModel>(1);
2058    
2059                    resourcePermissionModels.add(
2060                            newResourcePermissionModel(
2061                                    DDLRecordSet.class.getName(),
2062                                    String.valueOf(ddlRecordSetModel.getRecordSetId()),
2063                                    _ownerRoleModel.getRoleId(), _defaultUserId));
2064    
2065                    return resourcePermissionModels;
2066            }
2067    
2068            public List<ResourcePermissionModel> newResourcePermissionModels(
2069                    DDMStructureModel ddmStructureModel) {
2070    
2071                    List<ResourcePermissionModel> resourcePermissionModels =
2072                            new ArrayList<ResourcePermissionModel>(1);
2073    
2074                    resourcePermissionModels.add(
2075                            newResourcePermissionModel(
2076                                    DDMStructure.class.getName(),
2077                                    String.valueOf(ddmStructureModel.getStructureId()),
2078                                    _ownerRoleModel.getRoleId(), _defaultUserId));
2079    
2080                    return resourcePermissionModels;
2081            }
2082    
2083            public List<ResourcePermissionModel> newResourcePermissionModels(
2084                    DLFileEntryModel dlFileEntryModel) {
2085    
2086                    return newResourcePermissionModels(
2087                            DLFileEntry.class.getName(),
2088                            String.valueOf(dlFileEntryModel.getFileEntryId()), _sampleUserId);
2089            }
2090    
2091            public List<ResourcePermissionModel> newResourcePermissionModels(
2092                    DLFolderModel dlFolderModel) {
2093    
2094                    return newResourcePermissionModels(
2095                            DLFolder.class.getName(),
2096                            String.valueOf(dlFolderModel.getFolderId()), _sampleUserId);
2097            }
2098    
2099            public List<ResourcePermissionModel> newResourcePermissionModels(
2100                    JournalArticleResourceModel journalArticleResourceModel) {
2101    
2102                    return newResourcePermissionModels(
2103                            JournalArticle.class.getName(),
2104                            String.valueOf(journalArticleResourceModel.getResourcePrimKey()),
2105                            _sampleUserId);
2106            }
2107    
2108            public List<ResourcePermissionModel> newResourcePermissionModels(
2109                    LayoutModel layoutModel) {
2110    
2111                    return newResourcePermissionModels(
2112                            Layout.class.getName(), String.valueOf(layoutModel.getPlid()),
2113                            _sampleUserId);
2114            }
2115    
2116            public List<ResourcePermissionModel> newResourcePermissionModels(
2117                    MBCategoryModel mbCategoryModel) {
2118    
2119                    return newResourcePermissionModels(
2120                            MBCategory.class.getName(),
2121                            String.valueOf(mbCategoryModel.getCategoryId()), _sampleUserId);
2122            }
2123    
2124            public List<ResourcePermissionModel> newResourcePermissionModels(
2125                    MBMessageModel mbMessageModel) {
2126    
2127                    return newResourcePermissionModels(
2128                            MBMessage.class.getName(),
2129                            String.valueOf(mbMessageModel.getMessageId()), _sampleUserId);
2130            }
2131    
2132            public List<ResourcePermissionModel> newResourcePermissionModels(
2133                    PortletPreferencesModel portletPreferencesModel) {
2134    
2135                    String portletId = portletPreferencesModel.getPortletId();
2136    
2137                    String name = portletId;
2138    
2139                    int index = portletId.indexOf(StringPool.UNDERLINE);
2140    
2141                    if (index > 0) {
2142                            name = portletId.substring(0, index);
2143                    }
2144    
2145                    String primKey = PortletPermissionUtil.getPrimaryKey(
2146                            portletPreferencesModel.getPlid(), portletId);
2147    
2148                    return newResourcePermissionModels(name, primKey, 0);
2149            }
2150    
2151            public List<ResourcePermissionModel> newResourcePermissionModels(
2152                    String name, long primKey) {
2153    
2154                    return newResourcePermissionModels(
2155                            name, String.valueOf(primKey), _sampleUserId);
2156            }
2157    
2158            public List<ResourcePermissionModel> newResourcePermissionModels(
2159                    WikiNodeModel wikiNodeModel) {
2160    
2161                    return newResourcePermissionModels(
2162                            WikiNode.class.getName(), String.valueOf(wikiNodeModel.getNodeId()),
2163                            _sampleUserId);
2164            }
2165    
2166            public List<ResourcePermissionModel> newResourcePermissionModels(
2167                    WikiPageModel wikiPageModel) {
2168    
2169                    return newResourcePermissionModels(
2170                            WikiPage.class.getName(),
2171                            String.valueOf(wikiPageModel.getResourcePrimKey()), _sampleUserId);
2172            }
2173    
2174            public SocialActivityModel newSocialActivityModel(
2175                    BlogsEntryModel blogsEntryModel) {
2176    
2177                    return newSocialActivityModel(
2178                            blogsEntryModel.getGroupId(),
2179                            _classNameModelsMap.get(BlogsEntry.class.getName()),
2180                            blogsEntryModel.getEntryId(), BlogsActivityKeys.ADD_ENTRY,
2181                            "{\"title\":\""+ blogsEntryModel.getTitle() +"\"}");
2182            }
2183    
2184            public SocialActivityModel newSocialActivityModel(
2185                    DLFileEntryModel dlFileEntryModel) {
2186    
2187                    return newSocialActivityModel(
2188                            dlFileEntryModel.getGroupId(), getDLFileEntryClassNameId(),
2189                            dlFileEntryModel.getFileEntryId(), DLActivityKeys.ADD_FILE_ENTRY,
2190                            StringPool.BLANK);
2191            }
2192    
2193            public SocialActivityModel newSocialActivityModel(
2194                    JournalArticleModel journalArticleModel) {
2195    
2196                    int type = JournalActivityKeys.UPDATE_ARTICLE;
2197    
2198                    if (journalArticleModel.getVersion() ==
2199                                    JournalArticleConstants.VERSION_DEFAULT) {
2200    
2201                            type = JournalActivityKeys.ADD_ARTICLE;
2202                    }
2203    
2204                    return newSocialActivityModel(
2205                            journalArticleModel.getGroupId(), getJournalArticleClassNameId(),
2206                            journalArticleModel.getResourcePrimKey(), type,
2207                            "{\"title\":\""+ journalArticleModel.getUrlTitle() +"\"}");
2208            }
2209    
2210            public SocialActivityModel newSocialActivityModel(
2211                    MBMessageModel mbMessageModel) {
2212    
2213                    long classNameId = mbMessageModel.getClassNameId();
2214                    long classPK = mbMessageModel.getClassPK();
2215    
2216                    int type = 0;
2217                    String extraData = null;
2218    
2219                    if (classNameId == _classNameModelsMap.get(WikiPage.class.getName())) {
2220                            extraData = "{\"version\":1}";
2221    
2222                            type = WikiActivityKeys.ADD_PAGE;
2223                    }
2224                    else if (classNameId == 0) {
2225                            extraData = "{\"title\":\"" + mbMessageModel.getSubject() + "\"}";
2226    
2227                            type = MBActivityKeys.ADD_MESSAGE;
2228    
2229                            classNameId = _classNameModelsMap.get(MBMessage.class.getName());
2230                            classPK = mbMessageModel.getMessageId();
2231                    }
2232                    else {
2233                            StringBundler sb = new StringBundler(5);
2234    
2235                            sb.append("{\"messageId\":\"");
2236                            sb.append(mbMessageModel.getMessageId());
2237                            sb.append("\", \"title\":");
2238                            sb.append(mbMessageModel.getSubject());
2239                            sb.append("}");
2240    
2241                            extraData = sb.toString();
2242    
2243                            type = SocialActivityConstants.TYPE_ADD_COMMENT;
2244                    }
2245    
2246                    return newSocialActivityModel(
2247                            mbMessageModel.getGroupId(), classNameId, classPK, type, extraData);
2248            }
2249    
2250            public SubscriptionModel newSubscriptionModel(
2251                    BlogsEntryModel blogsEntryModel) {
2252    
2253                    return newSubscriptionModel(
2254                            _classNameModelsMap.get(BlogsEntry.class.getName()),
2255                            blogsEntryModel.getEntryId());
2256            }
2257    
2258            public SubscriptionModel newSubscriptionModel(MBThreadModel mBThreadModel) {
2259                    return newSubscriptionModel(
2260                            _classNameModelsMap.get(MBThread.class.getName()),
2261                            mBThreadModel.getThreadId());
2262            }
2263    
2264            public SubscriptionModel newSubscriptionModel(WikiPageModel wikiPageModel) {
2265                    return newSubscriptionModel(
2266                            _classNameModelsMap.get(WikiPage.class.getName()),
2267                            wikiPageModel.getResourcePrimKey());
2268            }
2269    
2270            public List<UserModel> newUserModels() {
2271                    List<UserModel> userModels = new ArrayList<UserModel>(_maxUserCount);
2272    
2273                    for (int i = 0; i < _maxUserCount; i++) {
2274                            String[] userName = nextUserName(i);
2275                            userModels.add(
2276                                    newUserModel(
2277                                            _counter.get(), userName[0], userName[1],
2278                                            "test" + _userScreenNameCounter.get(), false));
2279                    }
2280    
2281                    return userModels;
2282            }
2283    
2284            public List<WikiNodeModel> newWikiNodeModels(long groupId) {
2285                    List<WikiNodeModel> wikiNodeModels = new ArrayList<WikiNodeModel>(
2286                            _maxWikiNodeCount);
2287    
2288                    for (int i = 1; i <= _maxWikiNodeCount; i++) {
2289                            wikiNodeModels.add(newWikiNodeModel(groupId, i));
2290                    }
2291    
2292                    return wikiNodeModels;
2293            }
2294    
2295            public List<WikiPageModel> newWikiPageModels(WikiNodeModel wikiNodeModel) {
2296                    List<WikiPageModel> wikiPageModels = new ArrayList<WikiPageModel>(
2297                            _maxWikiPageCount);
2298    
2299                    for (int i = 1; i <= _maxWikiPageCount; i++) {
2300                            wikiPageModels.add(newWikiPageModel(wikiNodeModel, i));
2301                    }
2302    
2303                    return wikiPageModels;
2304            }
2305    
2306            public WikiPageResourceModel newWikiPageResourceModel(
2307                    WikiPageModel wikiPageModel) {
2308    
2309                    WikiPageResourceModel wikiPageResourceModel =
2310                            new WikiPageResourceModelImpl();
2311    
2312                    wikiPageResourceModel.setUuid(SequentialUUID.generate());
2313                    wikiPageResourceModel.setResourcePrimKey(
2314                            wikiPageModel.getResourcePrimKey());
2315                    wikiPageResourceModel.setNodeId(wikiPageModel.getNodeId());
2316                    wikiPageResourceModel.setTitle(wikiPageModel.getTitle());
2317    
2318                    return wikiPageResourceModel;
2319            }
2320    
2321            public String[] nextUserName(long index) {
2322                    String[] userName = new String[2];
2323    
2324                    userName[0] = _firstNames.get(
2325                            (int)(index / _lastNames.size()) % _firstNames.size());
2326                    userName[1] = _lastNames.get((int)(index % _lastNames.size()));
2327    
2328                    return userName;
2329            }
2330    
2331            protected String[] getAssetPublisherAssetCategoriesQueryValues(
2332                    List<AssetCategoryModel> assetCategoryModels, int index) {
2333    
2334                    AssetCategoryModel assetCategoryModel0 = assetCategoryModels.get(
2335                            index % assetCategoryModels.size());
2336                    AssetCategoryModel assetCategoryModel1 = assetCategoryModels.get(
2337                            (index + _maxAssetEntryToAssetCategoryCount) %
2338                                    assetCategoryModels.size());
2339                    AssetCategoryModel assetCategoryModel2 = assetCategoryModels.get(
2340                            (index + _maxAssetEntryToAssetCategoryCount * 2) %
2341                                    assetCategoryModels.size());
2342                    AssetCategoryModel assetCategoryModel3 = assetCategoryModels.get(
2343                            (index + _maxAssetEntryToAssetCategoryCount * 3) %
2344                                    assetCategoryModels.size());
2345    
2346                    return new String[] {
2347                            String.valueOf(assetCategoryModel0.getCategoryId()),
2348                            String.valueOf(assetCategoryModel1.getCategoryId()),
2349                            String.valueOf(assetCategoryModel2.getCategoryId()),
2350                            String.valueOf(assetCategoryModel3.getCategoryId())
2351                    };
2352            }
2353    
2354            protected String[] getAssetPublisherAssetTagsQueryValues(
2355                    List<AssetTagModel> assetTagModels, int index) {
2356    
2357                    AssetTagModel assetTagModel0 = assetTagModels.get(
2358                            index % assetTagModels.size());
2359                    AssetTagModel assetTagModel1 = assetTagModels.get(
2360                            (index + _maxAssetEntryToAssetTagCount) % assetTagModels.size());
2361                    AssetTagModel assetTagModel2 = assetTagModels.get(
2362                            (index + _maxAssetEntryToAssetTagCount * 2) %
2363                                    assetTagModels.size());
2364                    AssetTagModel assetTagModel3 = assetTagModels.get(
2365                            (index + _maxAssetEntryToAssetTagCount * 3) %
2366                                    assetTagModels.size());
2367    
2368                    return new String[] {
2369                            assetTagModel0.getName(), assetTagModel1.getName(),
2370                            assetTagModel2.getName(), assetTagModel3.getName()
2371                    };
2372            }
2373    
2374            protected InputStream getResourceInputStream(String resourceName) {
2375                    Class<?> clazz = getClass();
2376    
2377                    ClassLoader classLoader = clazz.getClassLoader();
2378    
2379                    return classLoader.getResourceAsStream(
2380                            _DEPENDENCIES_DIR + resourceName);
2381            }
2382    
2383            protected AssetCategoryModel newAssetCategoryModel(
2384                    long groupId, long lastRightCategoryId, String name,
2385                    long vocabularyId) {
2386    
2387                    AssetCategoryModel assetCategoryModel = new AssetCategoryModelImpl();
2388    
2389                    assetCategoryModel.setUuid(SequentialUUID.generate());
2390                    assetCategoryModel.setCategoryId(_counter.get());
2391                    assetCategoryModel.setGroupId(groupId);
2392                    assetCategoryModel.setCompanyId(_companyId);
2393                    assetCategoryModel.setUserId(_sampleUserId);
2394                    assetCategoryModel.setUserName(_SAMPLE_USER_NAME);
2395                    assetCategoryModel.setCreateDate(new Date());
2396                    assetCategoryModel.setModifiedDate(new Date());
2397                    assetCategoryModel.setParentCategoryId(
2398                            AssetCategoryConstants.DEFAULT_PARENT_CATEGORY_ID);
2399                    assetCategoryModel.setLeftCategoryId(lastRightCategoryId++);
2400                    assetCategoryModel.setRightCategoryId(lastRightCategoryId++);
2401                    assetCategoryModel.setName(name);
2402    
2403                    StringBundler sb = new StringBundler(5);
2404    
2405                    sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><root ");
2406                    sb.append("available-locales=\"en_US\" default-locale=\"en_US\">");
2407                    sb.append("<Title language-id=\"en_US\">");
2408                    sb.append(name);
2409                    sb.append("</Title></root>");
2410    
2411                    assetCategoryModel.setTitle(sb.toString());
2412    
2413                    assetCategoryModel.setVocabularyId(vocabularyId);
2414    
2415                    return assetCategoryModel;
2416            }
2417    
2418            protected AssetEntryModel newAssetEntryModel(
2419                    long groupId, Date createDate, Date modifiedDate, long classNameId,
2420                    long classPK, String uuid, long classTypeId, boolean visible,
2421                    String mimeType, String title) {
2422    
2423                    AssetEntryModel assetEntryModel = new AssetEntryModelImpl();
2424    
2425                    assetEntryModel.setEntryId(_counter.get());
2426                    assetEntryModel.setGroupId(groupId);
2427                    assetEntryModel.setCompanyId(_companyId);
2428                    assetEntryModel.setUserId(_sampleUserId);
2429                    assetEntryModel.setUserName(_SAMPLE_USER_NAME);
2430                    assetEntryModel.setCreateDate(createDate);
2431                    assetEntryModel.setModifiedDate(modifiedDate);
2432                    assetEntryModel.setClassNameId(classNameId);
2433                    assetEntryModel.setClassPK(classPK);
2434                    assetEntryModel.setClassUuid(uuid);
2435                    assetEntryModel.setClassTypeId(classTypeId);
2436                    assetEntryModel.setVisible(visible);
2437                    assetEntryModel.setStartDate(createDate);
2438                    assetEntryModel.setEndDate(nextFutureDate());
2439                    assetEntryModel.setPublishDate(createDate);
2440                    assetEntryModel.setExpirationDate(nextFutureDate());
2441                    assetEntryModel.setMimeType(mimeType);
2442                    assetEntryModel.setTitle(title);
2443    
2444                    return assetEntryModel;
2445            }
2446    
2447            protected AssetTagStatsModel newAssetTagStatsModel(
2448                    long tagId, long classNameId) {
2449    
2450                    AssetTagStatsModel assetTagStatsModel = new AssetTagStatsModelImpl();
2451    
2452                    assetTagStatsModel.setTagStatsId(_counter.get());
2453                    assetTagStatsModel.setTagId(tagId);
2454                    assetTagStatsModel.setClassNameId(classNameId);
2455    
2456                    return assetTagStatsModel;
2457            }
2458    
2459            protected AssetVocabularyModel newAssetVocabularyModel(
2460                    long grouId, long userId, String userName, String name) {
2461    
2462                    AssetVocabularyModel assetVocabularyModel =
2463                            new AssetVocabularyModelImpl();
2464    
2465                    assetVocabularyModel.setUuid(SequentialUUID.generate());
2466                    assetVocabularyModel.setVocabularyId(_counter.get());
2467                    assetVocabularyModel.setGroupId(grouId);
2468                    assetVocabularyModel.setCompanyId(_companyId);
2469                    assetVocabularyModel.setUserId(userId);
2470                    assetVocabularyModel.setUserName(userName);
2471                    assetVocabularyModel.setCreateDate(new Date());
2472                    assetVocabularyModel.setModifiedDate(new Date());
2473                    assetVocabularyModel.setName(name);
2474    
2475                    StringBundler sb = new StringBundler(5);
2476    
2477                    sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><root ");
2478                    sb.append("available-locales=\"en_US\" default-locale=\"en_US\">");
2479                    sb.append("<Title language-id=\"en_US\">");
2480                    sb.append(name);
2481                    sb.append("</Title></root>");
2482    
2483                    assetVocabularyModel.setTitle(sb.toString());
2484    
2485                    assetVocabularyModel.setSettings(
2486                            "multiValued=true\\nselectedClassNameIds=0");
2487    
2488                    return assetVocabularyModel;
2489            }
2490    
2491            protected BlogsEntryModel newBlogsEntryModel(long groupId, int index) {
2492                    BlogsEntryModel blogsEntryModel = new BlogsEntryModelImpl();
2493    
2494                    blogsEntryModel.setUuid(SequentialUUID.generate());
2495                    blogsEntryModel.setEntryId(_counter.get());
2496                    blogsEntryModel.setGroupId(groupId);
2497                    blogsEntryModel.setCompanyId(_companyId);
2498                    blogsEntryModel.setUserId(_sampleUserId);
2499                    blogsEntryModel.setUserName(_SAMPLE_USER_NAME);
2500                    blogsEntryModel.setCreateDate(new Date());
2501                    blogsEntryModel.setModifiedDate(new Date());
2502                    blogsEntryModel.setTitle("Test Blog " + index);
2503                    blogsEntryModel.setSubtitle("Subtitle of Test Blog " + index);
2504                    blogsEntryModel.setUrlTitle("testblog" + index);
2505                    blogsEntryModel.setContent("This is test blog " + index + ".");
2506                    blogsEntryModel.setDisplayDate(new Date());
2507                    blogsEntryModel.setStatusDate(new Date());
2508    
2509                    return blogsEntryModel;
2510            }
2511    
2512            protected DDMContentModel newDDMContentModel(
2513                    long contentId, long groupId, String data) {
2514    
2515                    DDMContentModel ddmContentModel = new DDMContentModelImpl();
2516    
2517                    ddmContentModel.setUuid(SequentialUUID.generate());
2518                    ddmContentModel.setContentId(contentId);
2519                    ddmContentModel.setGroupId(groupId);
2520                    ddmContentModel.setCompanyId(_companyId);
2521                    ddmContentModel.setUserId(_sampleUserId);
2522                    ddmContentModel.setUserName(_SAMPLE_USER_NAME);
2523                    ddmContentModel.setCreateDate(nextFutureDate());
2524                    ddmContentModel.setModifiedDate(nextFutureDate());
2525                    ddmContentModel.setName(DDMStorageLink.class.getName());
2526                    ddmContentModel.setData(data);
2527    
2528                    return ddmContentModel;
2529            }
2530    
2531            protected DDMStructureLinkModel newDDMStructureLinkModel(
2532                    long classNameId, long classPK, long structureId) {
2533    
2534                    DDMStructureLinkModel ddmStructureLinkModel =
2535                            new DDMStructureLinkModelImpl();
2536    
2537                    ddmStructureLinkModel.setStructureLinkId(_counter.get());
2538                    ddmStructureLinkModel.setClassNameId(classNameId);
2539                    ddmStructureLinkModel.setClassPK(classPK);
2540                    ddmStructureLinkModel.setStructureId(structureId);
2541    
2542                    return ddmStructureLinkModel;
2543            }
2544    
2545            protected DDMStructureModel newDDMStructureModel(
2546                    long groupId, long userId, long classNameId, String structureKey,
2547                    String definition) {
2548    
2549                    DDMStructureModel dDMStructureModel = new DDMStructureModelImpl();
2550    
2551                    dDMStructureModel.setUuid(SequentialUUID.generate());
2552                    dDMStructureModel.setStructureId(_counter.get());
2553                    dDMStructureModel.setGroupId(groupId);
2554                    dDMStructureModel.setCompanyId(_companyId);
2555                    dDMStructureModel.setUserId(userId);
2556                    dDMStructureModel.setUserName(_SAMPLE_USER_NAME);
2557                    dDMStructureModel.setCreateDate(nextFutureDate());
2558                    dDMStructureModel.setModifiedDate(nextFutureDate());
2559                    dDMStructureModel.setClassNameId(classNameId);
2560                    dDMStructureModel.setStructureKey(structureKey);
2561    
2562                    StringBundler sb = new StringBundler(5);
2563    
2564                    sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><root ");
2565                    sb.append("available-locales=\"en_US\" default-locale=\"en_US\">");
2566                    sb.append("<name language-id=\"en_US\">");
2567                    sb.append(structureKey);
2568                    sb.append("</name></root>");
2569    
2570                    dDMStructureModel.setName(sb.toString());
2571    
2572                    dDMStructureModel.setDefinition(definition);
2573                    dDMStructureModel.setStorageType("xml");
2574    
2575                    return dDMStructureModel;
2576            }
2577    
2578            protected DDMTemplateModel newDDMTemplateModel(
2579                    long groupId, long userId, long structureId) {
2580    
2581                    DDMTemplateModel ddmTemplateModel = new DDMTemplateModelImpl();
2582    
2583                    ddmTemplateModel.setUuid(SequentialUUID.generate());
2584                    ddmTemplateModel.setTemplateId(_counter.get());
2585                    ddmTemplateModel.setGroupId(groupId);
2586                    ddmTemplateModel.setCompanyId(_companyId);
2587                    ddmTemplateModel.setUserId(userId);
2588                    ddmTemplateModel.setCreateDate(nextFutureDate());
2589                    ddmTemplateModel.setModifiedDate(nextFutureDate());
2590                    ddmTemplateModel.setClassNameId(
2591                            _classNameModelsMap.get(DDMStructure.class.getName()));
2592                    ddmTemplateModel.setClassPK(structureId);
2593                    ddmTemplateModel.setTemplateKey(String.valueOf(_counter.get()));
2594    
2595                    StringBundler sb = new StringBundler(3);
2596    
2597                    sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><root ");
2598                    sb.append("available-locales=\"en_US\" default-locale=\"en_US\">");
2599                    sb.append(
2600                            "<name language-id=\"en_US\">Basic Web Content</name></root>");
2601    
2602                    ddmTemplateModel.setName(sb.toString());
2603    
2604                    ddmTemplateModel.setType(DDMTemplateConstants.TEMPLATE_TYPE_DISPLAY);
2605                    ddmTemplateModel.setMode(DDMTemplateConstants.TEMPLATE_MODE_CREATE);
2606                    ddmTemplateModel.setLanguage(TemplateConstants.LANG_TYPE_FTL);
2607                    ddmTemplateModel.setScript("${content.getData()}");
2608                    ddmTemplateModel.setCacheable(false);
2609                    ddmTemplateModel.setSmallImage(false);
2610    
2611                    return ddmTemplateModel;
2612            }
2613    
2614            protected DLFileEntryModel newDlFileEntryModel(
2615                    DLFolderModel dlFolerModel, int index) {
2616    
2617                    DLFileEntryModel dlFileEntryModel = new DLFileEntryModelImpl();
2618    
2619                    dlFileEntryModel.setUuid(SequentialUUID.generate());
2620                    dlFileEntryModel.setFileEntryId(_counter.get());
2621                    dlFileEntryModel.setGroupId(dlFolerModel.getGroupId());
2622                    dlFileEntryModel.setCompanyId(_companyId);
2623                    dlFileEntryModel.setUserId(_sampleUserId);
2624                    dlFileEntryModel.setUserName(_SAMPLE_USER_NAME);
2625                    dlFileEntryModel.setCreateDate(nextFutureDate());
2626                    dlFileEntryModel.setModifiedDate(nextFutureDate());
2627                    dlFileEntryModel.setRepositoryId(dlFolerModel.getRepositoryId());
2628                    dlFileEntryModel.setFolderId(dlFolerModel.getFolderId());
2629                    dlFileEntryModel.setName("TestFile" + index);
2630                    dlFileEntryModel.setFileName("TestFile" + index + ".txt");
2631                    dlFileEntryModel.setExtension("txt");
2632                    dlFileEntryModel.setMimeType(ContentTypes.TEXT_PLAIN);
2633                    dlFileEntryModel.setTitle("TestFile" + index + ".txt");
2634                    dlFileEntryModel.setFileEntryTypeId(
2635                            DLFileEntryTypeConstants.FILE_ENTRY_TYPE_ID_BASIC_DOCUMENT);
2636                    dlFileEntryModel.setVersion(DLFileEntryConstants.VERSION_DEFAULT);
2637                    dlFileEntryModel.setSize(_maxDLFileEntrySize);
2638    
2639                    return dlFileEntryModel;
2640            }
2641    
2642            protected DLFolderModel newDLFolderModel(
2643                    long groupId, long parentFolderId, int index) {
2644    
2645                    DLFolderModel dlFolderModel = new DLFolderModelImpl();
2646    
2647                    dlFolderModel.setUuid(SequentialUUID.generate());
2648                    dlFolderModel.setFolderId(_counter.get());
2649                    dlFolderModel.setGroupId(groupId);
2650                    dlFolderModel.setCompanyId(_companyId);
2651                    dlFolderModel.setUserId(_sampleUserId);
2652                    dlFolderModel.setUserName(_SAMPLE_USER_NAME);
2653                    dlFolderModel.setCreateDate(nextFutureDate());
2654                    dlFolderModel.setModifiedDate(nextFutureDate());
2655                    dlFolderModel.setRepositoryId(groupId);
2656                    dlFolderModel.setParentFolderId(parentFolderId);
2657                    dlFolderModel.setName("Test Folder " + index);
2658                    dlFolderModel.setLastPostDate(nextFutureDate());
2659                    dlFolderModel.setDefaultFileEntryTypeId(
2660                            _defaultDLFileEntryTypeModel.getFileEntryTypeId());
2661                    dlFolderModel.setStatusDate(nextFutureDate());
2662    
2663                    return dlFolderModel;
2664            }
2665    
2666            protected GroupModel newGroupModel(
2667                            long groupId, long classNameId, long classPK, String name,
2668                            boolean site)
2669                    throws Exception {
2670    
2671                    GroupModel groupModel = new GroupModelImpl();
2672    
2673                    groupModel.setUuid(SequentialUUID.generate());
2674                    groupModel.setGroupId(groupId);
2675                    groupModel.setCompanyId(_companyId);
2676                    groupModel.setCreatorUserId(_sampleUserId);
2677                    groupModel.setClassNameId(classNameId);
2678                    groupModel.setClassPK(classPK);
2679                    groupModel.setTreePath(
2680                            StringPool.SLASH + groupModel.getGroupId() + StringPool.SLASH);
2681                    groupModel.setName(name);
2682                    groupModel.setManualMembership(true);
2683                    groupModel.setMembershipRestriction(
2684                            GroupConstants.DEFAULT_MEMBERSHIP_RESTRICTION);
2685                    groupModel.setFriendlyURL(
2686                            StringPool.FORWARD_SLASH +
2687                                    FriendlyURLNormalizerUtil.normalize(name));
2688                    groupModel.setSite(site);
2689                    groupModel.setActive(true);
2690    
2691                    return groupModel;
2692            }
2693    
2694            protected LayoutSetModel newLayoutSetModel(
2695                    long groupId, boolean privateLayout, int pageCount) {
2696    
2697                    LayoutSetModel layoutSetModel = new LayoutSetModelImpl();
2698    
2699                    layoutSetModel.setLayoutSetId(_counter.get());
2700                    layoutSetModel.setGroupId(groupId);
2701                    layoutSetModel.setCompanyId(_companyId);
2702                    layoutSetModel.setCreateDate(new Date());
2703                    layoutSetModel.setModifiedDate(new Date());
2704                    layoutSetModel.setPrivateLayout(privateLayout);
2705                    layoutSetModel.setThemeId("classic");
2706                    layoutSetModel.setColorSchemeId("01");
2707                    layoutSetModel.setWapThemeId("mobile");
2708                    layoutSetModel.setWapColorSchemeId("01");
2709                    layoutSetModel.setPageCount(pageCount);
2710    
2711                    return layoutSetModel;
2712            }
2713    
2714            protected MBCategoryModel newMBCategoryModel(long groupId, int index) {
2715                    MBCategoryModel mbCategoryModel = new MBCategoryModelImpl();
2716    
2717                    mbCategoryModel.setUuid(SequentialUUID.generate());
2718                    mbCategoryModel.setCategoryId(_counter.get());
2719                    mbCategoryModel.setGroupId(groupId);
2720                    mbCategoryModel.setCompanyId(_companyId);
2721                    mbCategoryModel.setUserId(_sampleUserId);
2722                    mbCategoryModel.setUserName(_SAMPLE_USER_NAME);
2723                    mbCategoryModel.setCreateDate(new Date());
2724                    mbCategoryModel.setModifiedDate(new Date());
2725                    mbCategoryModel.setParentCategoryId(
2726                            MBCategoryConstants.DEFAULT_PARENT_CATEGORY_ID);
2727                    mbCategoryModel.setName("Test Category " + index);
2728                    mbCategoryModel.setDisplayStyle(
2729                            MBCategoryConstants.DEFAULT_DISPLAY_STYLE);
2730                    mbCategoryModel.setThreadCount(_maxMBThreadCount);
2731                    mbCategoryModel.setMessageCount(_maxMBThreadCount * _maxMBMessageCount);
2732                    mbCategoryModel.setLastPostDate(new Date());
2733                    mbCategoryModel.setStatusDate(new Date());
2734    
2735                    return mbCategoryModel;
2736            }
2737    
2738            protected MBMessageModel newMBMessageModel(
2739                    long groupId, long classNameId, long classPK, long categoryId,
2740                    long threadId, long messageId, long rootMessageId, long parentMessageId,
2741                    String subject, String body) {
2742    
2743                    MBMessageModel mBMessageModel = new MBMessageModelImpl();
2744    
2745                    mBMessageModel.setUuid(SequentialUUID.generate());
2746                    mBMessageModel.setMessageId(messageId);
2747                    mBMessageModel.setGroupId(groupId);
2748                    mBMessageModel.setCompanyId(_companyId);
2749                    mBMessageModel.setUserId(_sampleUserId);
2750                    mBMessageModel.setUserName(_SAMPLE_USER_NAME);
2751                    mBMessageModel.setCreateDate(new Date());
2752                    mBMessageModel.setModifiedDate(new Date());
2753                    mBMessageModel.setClassNameId(classNameId);
2754                    mBMessageModel.setClassPK(classPK);
2755                    mBMessageModel.setCategoryId(categoryId);
2756                    mBMessageModel.setThreadId(threadId);
2757                    mBMessageModel.setRootMessageId(rootMessageId);
2758                    mBMessageModel.setParentMessageId(parentMessageId);
2759                    mBMessageModel.setSubject(subject);
2760                    mBMessageModel.setBody(body);
2761                    mBMessageModel.setFormat(MBMessageConstants.DEFAULT_FORMAT);
2762                    mBMessageModel.setStatusDate(new Date());
2763    
2764                    return mBMessageModel;
2765            }
2766    
2767            protected MBThreadModel newMBThreadModel(
2768                    long threadId, long groupId, long categoryId, long rootMessageId,
2769                    int messageCount) {
2770    
2771                    MBThreadModel mbThreadModel = new MBThreadModelImpl();
2772    
2773                    mbThreadModel.setUuid(SequentialUUID.generate());
2774                    mbThreadModel.setThreadId(threadId);
2775                    mbThreadModel.setGroupId(groupId);
2776                    mbThreadModel.setCompanyId(_companyId);
2777                    mbThreadModel.setUserId(_sampleUserId);
2778                    mbThreadModel.setUserName(_SAMPLE_USER_NAME);
2779                    mbThreadModel.setCreateDate(new Date());
2780                    mbThreadModel.setModifiedDate(new Date());
2781                    mbThreadModel.setCategoryId(categoryId);
2782                    mbThreadModel.setRootMessageId(rootMessageId);
2783                    mbThreadModel.setRootMessageUserId(_sampleUserId);
2784                    mbThreadModel.setMessageCount(messageCount);
2785                    mbThreadModel.setLastPostByUserId(_sampleUserId);
2786                    mbThreadModel.setLastPostDate(new Date());
2787                    mbThreadModel.setStatusDate(new Date());
2788    
2789                    return mbThreadModel;
2790            }
2791    
2792            protected PortletPreferencesModel newPortletPreferencesModel(
2793                    long plid, String portletId, String preferences) {
2794    
2795                    PortletPreferencesModel portletPreferencesModel =
2796                            new PortletPreferencesModelImpl();
2797    
2798                    portletPreferencesModel.setPortletPreferencesId(_counter.get());
2799                    portletPreferencesModel.setOwnerId(PortletKeys.PREFS_OWNER_ID_DEFAULT);
2800                    portletPreferencesModel.setOwnerType(
2801                            PortletKeys.PREFS_OWNER_TYPE_LAYOUT);
2802                    portletPreferencesModel.setPlid(plid);
2803                    portletPreferencesModel.setPortletId(portletId);
2804                    portletPreferencesModel.setPreferences(preferences);
2805    
2806                    return portletPreferencesModel;
2807            }
2808    
2809            protected ResourcePermissionModel newResourcePermissionModel(
2810                    String name, String primKey, long roleId, long ownerId) {
2811    
2812                    ResourcePermissionModel resourcePermissionModel =
2813                            new ResourcePermissionModelImpl();
2814    
2815                    resourcePermissionModel.setResourcePermissionId(
2816                            _resourcePermissionCounter.get());
2817                    resourcePermissionModel.setCompanyId(_companyId);
2818                    resourcePermissionModel.setName(name);
2819                    resourcePermissionModel.setScope(ResourceConstants.SCOPE_INDIVIDUAL);
2820                    resourcePermissionModel.setPrimKey(primKey);
2821                    resourcePermissionModel.setRoleId(roleId);
2822                    resourcePermissionModel.setOwnerId(ownerId);
2823                    resourcePermissionModel.setActionIds(1);
2824    
2825                    return resourcePermissionModel;
2826            }
2827    
2828            protected List<ResourcePermissionModel> newResourcePermissionModels(
2829                    String name, String primKey, long ownerId) {
2830    
2831                    List<ResourcePermissionModel> resourcePermissionModels =
2832                            new ArrayList<ResourcePermissionModel>(3);
2833    
2834                    resourcePermissionModels.add(
2835                            newResourcePermissionModel(
2836                                    name, primKey, _guestRoleModel.getRoleId(), 0));
2837                    resourcePermissionModels.add(
2838                            newResourcePermissionModel(
2839                                    name, primKey, _ownerRoleModel.getRoleId(), ownerId));
2840                    resourcePermissionModels.add(
2841                            newResourcePermissionModel(
2842                                    name, primKey, _siteMemberRoleModel.getRoleId(), 0));
2843    
2844                    return resourcePermissionModels;
2845            }
2846    
2847            protected RoleModel newRoleModel(String name, int type) {
2848                    RoleModel roleModel = new RoleModelImpl();
2849    
2850                    roleModel.setUuid(SequentialUUID.generate());
2851                    roleModel.setRoleId(_counter.get());
2852                    roleModel.setCompanyId(_companyId);
2853                    roleModel.setUserId(_sampleUserId);
2854                    roleModel.setUserName(_SAMPLE_USER_NAME);
2855                    roleModel.setCreateDate(new Date());
2856                    roleModel.setModifiedDate(new Date());
2857                    roleModel.setClassNameId(_classNameModelsMap.get(Role.class.getName()));
2858                    roleModel.setClassPK(roleModel.getRoleId());
2859                    roleModel.setName(name);
2860                    roleModel.setType(type);
2861    
2862                    return roleModel;
2863            }
2864    
2865            protected SocialActivityModel newSocialActivityModel(
2866                    long groupId, long classNameId, long classPK, int type,
2867                    String extraData) {
2868    
2869                    SocialActivityModel socialActivityModel = new SocialActivityModelImpl();
2870    
2871                    socialActivityModel.setActivityId(_socialActivityCounter.get());
2872                    socialActivityModel.setGroupId(groupId);
2873                    socialActivityModel.setCompanyId(_companyId);
2874                    socialActivityModel.setUserId(_sampleUserId);
2875                    socialActivityModel.setCreateDate(_CURRENT_TIME + _timeCounter.get());
2876                    socialActivityModel.setClassNameId(classNameId);
2877                    socialActivityModel.setClassPK(classPK);
2878                    socialActivityModel.setType(type);
2879                    socialActivityModel.setExtraData(extraData);
2880    
2881                    return socialActivityModel;
2882            }
2883    
2884            protected SubscriptionModel newSubscriptionModel(
2885                    long classNameId, long classPK) {
2886    
2887                    SubscriptionModel subscriptionModel = new SubscriptionModelImpl();
2888    
2889                    subscriptionModel.setSubscriptionId(_counter.get());
2890                    subscriptionModel.setCompanyId(_companyId);
2891                    subscriptionModel.setUserId(_sampleUserId);
2892                    subscriptionModel.setUserName(_SAMPLE_USER_NAME);
2893                    subscriptionModel.setCreateDate(new Date());
2894                    subscriptionModel.setModifiedDate(new Date());
2895                    subscriptionModel.setClassNameId(classNameId);
2896                    subscriptionModel.setClassPK(classPK);
2897                    subscriptionModel.setFrequency(SubscriptionConstants.FREQUENCY_INSTANT);
2898    
2899                    return subscriptionModel;
2900            }
2901    
2902            protected UserModel newUserModel(
2903                    long userId, String firstName, String lastName, String screenName,
2904                    boolean defaultUser) {
2905    
2906                    if (Validator.isNull(screenName)) {
2907                            screenName = String.valueOf(userId);
2908                    }
2909    
2910                    UserModel userModel = new UserModelImpl();
2911    
2912                    userModel.setUuid(SequentialUUID.generate());
2913                    userModel.setUserId(userId);
2914                    userModel.setCompanyId(_companyId);
2915                    userModel.setCreateDate(new Date());
2916                    userModel.setModifiedDate(new Date());
2917                    userModel.setDefaultUser(defaultUser);
2918                    userModel.setContactId(_counter.get());
2919                    userModel.setPassword("test");
2920                    userModel.setPasswordModifiedDate(new Date());
2921                    userModel.setReminderQueryQuestion("What is your screen name?");
2922                    userModel.setReminderQueryAnswer(screenName);
2923                    userModel.setEmailAddress(screenName + "@liferay.com");
2924                    userModel.setScreenName(screenName);
2925                    userModel.setLanguageId("en_US");
2926                    userModel.setGreeting("Welcome " + screenName + StringPool.EXCLAMATION);
2927                    userModel.setFirstName(firstName);
2928                    userModel.setLastName(lastName);
2929                    userModel.setLoginDate(new Date());
2930                    userModel.setLastLoginDate(new Date());
2931                    userModel.setLastFailedLoginDate(new Date());
2932                    userModel.setLockoutDate(new Date());
2933                    userModel.setAgreedToTermsOfUse(true);
2934                    userModel.setEmailAddressVerified(true);
2935    
2936                    return userModel;
2937            }
2938    
2939            protected WikiNodeModel newWikiNodeModel(long groupId, int index) {
2940                    WikiNodeModel wikiNodeModel = new WikiNodeModelImpl();
2941    
2942                    wikiNodeModel.setUuid(SequentialUUID.generate());
2943                    wikiNodeModel.setNodeId(_counter.get());
2944                    wikiNodeModel.setGroupId(groupId);
2945                    wikiNodeModel.setCompanyId(_companyId);
2946                    wikiNodeModel.setUserId(_sampleUserId);
2947                    wikiNodeModel.setUserName(_SAMPLE_USER_NAME);
2948                    wikiNodeModel.setCreateDate(new Date());
2949                    wikiNodeModel.setModifiedDate(new Date());
2950                    wikiNodeModel.setName("Test Node " + index);
2951                    wikiNodeModel.setLastPostDate(new Date());
2952                    wikiNodeModel.setStatusDate(new Date());
2953    
2954                    return wikiNodeModel;
2955            }
2956    
2957            protected WikiPageModel newWikiPageModel(
2958                    WikiNodeModel wikiNodeModel, int index) {
2959    
2960                    WikiPageModel wikiPageModel = new WikiPageModelImpl();
2961    
2962                    wikiPageModel.setUuid(SequentialUUID.generate());
2963                    wikiPageModel.setPageId(_counter.get());
2964                    wikiPageModel.setResourcePrimKey(_counter.get());
2965                    wikiPageModel.setGroupId(wikiNodeModel.getGroupId());
2966                    wikiPageModel.setCompanyId(_companyId);
2967                    wikiPageModel.setUserId(_sampleUserId);
2968                    wikiPageModel.setUserName(_SAMPLE_USER_NAME);
2969                    wikiPageModel.setCreateDate(new Date());
2970                    wikiPageModel.setModifiedDate(new Date());
2971                    wikiPageModel.setNodeId(wikiNodeModel.getNodeId());
2972                    wikiPageModel.setTitle("Test Page " + index);
2973                    wikiPageModel.setVersion(WikiPageConstants.VERSION_DEFAULT);
2974                    wikiPageModel.setContent("This is test page " + index + ".");
2975                    wikiPageModel.setFormat(WikiPageConstants.DEFAULT_FORMAT);
2976                    wikiPageModel.setHead(true);
2977    
2978                    return wikiPageModel;
2979            }
2980    
2981            protected String nextDDLCustomFieldName(
2982                    long groupId, int customFieldIndex) {
2983    
2984                    StringBundler sb = new StringBundler(4);
2985    
2986                    sb.append("costom_field_text_");
2987                    sb.append(groupId);
2988                    sb.append("_");
2989                    sb.append(customFieldIndex);
2990    
2991                    return sb.toString();
2992            }
2993    
2994            protected Date nextFutureDate() {
2995                    return new Date(
2996                            _FUTURE_TIME + (_futureDateCounter.get() * Time.SECOND));
2997            }
2998    
2999            private static final long _CURRENT_TIME = System.currentTimeMillis();
3000    
3001            private static final String _DEPENDENCIES_DIR =
3002                    "com/liferay/portal/tools/samplesqlbuilder/dependencies/";
3003    
3004            private static final long _FUTURE_TIME =
3005                    System.currentTimeMillis() + Time.YEAR;
3006    
3007            private static final String _SAMPLE_USER_NAME = "Sample";
3008    
3009            private static PortletPreferencesFactory _portletPreferencesFactory =
3010                    new PortletPreferencesFactoryImpl();
3011    
3012            private long _accountId;
3013            private AccountModel _accountModel;
3014            private RoleModel _administratorRoleModel;
3015            private Map<Long, SimpleCounter> _assetCategoryCounters =
3016                    new HashMap<Long, SimpleCounter>();
3017            private List<AssetCategoryModel>[] _assetCategoryModelsArray;
3018            private Map<Long, SimpleCounter> _assetPublisherQueryCounter =
3019                    new HashMap<Long, SimpleCounter>();
3020            private String _assetPublisherQueryName;
3021            private Map<Long, SimpleCounter> _assetTagCounters =
3022                    new HashMap<Long, SimpleCounter>();
3023            private List<AssetTagModel>[] _assetTagModelsArray;
3024            private List<AssetTagStatsModel>[] _assetTagStatsModelsArray;
3025            private List<AssetVocabularyModel>[] _assetVocabularyModelsArray;
3026            private List<ClassNameModel> _classNameModels;
3027            private Map<String, Long> _classNameModelsMap = new HashMap<String, Long>();
3028            private long _companyId;
3029            private CompanyModel _companyModel;
3030            private SimpleCounter _counter;
3031            private PortletPreferencesImpl _defaultAssetPublisherPortletPreference;
3032            private AssetVocabularyModel _defaultAssetVocabularyModel;
3033            private DDMStructureModel _defaultDLDDMStructureModel;
3034            private DLFileEntryTypeModel _defaultDLFileEntryTypeModel;
3035            private DDMStructureModel _defaultJournalDDMStructureModel;
3036            private DDMTemplateModel _defaultJournalDDMTemplateModel;
3037            private long _defaultUserId;
3038            private UserModel _defaultUserModel;
3039            private String _dlDDMStructureContent;
3040            private List<String> _firstNames;
3041            private SimpleCounter _futureDateCounter;
3042            private long _globalGroupId;
3043            private GroupModel _globalGroupModel;
3044            private List<GroupModel> _groupModels;
3045            private long _guestGroupId;
3046            private GroupModel _guestGroupModel;
3047            private RoleModel _guestRoleModel;
3048            private UserModel _guestUserModel;
3049            private String _journalArticleContent;
3050            private Map<Long, String> _journalArticleResourceUUIDs =
3051                    new HashMap<Long, String>();
3052            private String _journalDDMStructureContent;
3053            private List<String> _lastNames;
3054            private Map<Long, SimpleCounter> _layoutCounters =
3055                    new HashMap<Long, SimpleCounter>();
3056            private int _maxAssetCategoryCount;
3057            private int _maxAssetEntryToAssetCategoryCount;
3058            private int _maxAssetEntryToAssetTagCount;
3059            private int _maxAssetPublisherPageCount;
3060            private int _maxAssetTagCount;
3061            private int _maxAssetVocabularyCount;
3062            private int _maxBlogsEntryCommentCount;
3063            private int _maxBlogsEntryCount;
3064            private int _maxDDLCustomFieldCount;
3065            private int _maxDDLRecordCount;
3066            private int _maxDDLRecordSetCount;
3067            private int _maxDLFileEntryCount;
3068            private int _maxDLFileEntrySize;
3069            private int _maxDLFolderCount;
3070            private int _maxDLFolderDepth;
3071            private int _maxGroupsCount;
3072            private int _maxJournalArticleCount;
3073            private int _maxJournalArticlePageCount;
3074            private int _maxJournalArticleVersionCount;
3075            private int _maxMBCategoryCount;
3076            private int _maxMBMessageCount;
3077            private int _maxMBThreadCount;
3078            private int _maxUserCount;
3079            private int _maxUserToGroupCount;
3080            private int _maxWikiNodeCount;
3081            private int _maxWikiPageCommentCount;
3082            private int _maxWikiPageCount;
3083            private RoleModel _ownerRoleModel;
3084            private RoleModel _powerUserRoleModel;
3085            private SimpleCounter _resourcePermissionCounter;
3086            private List<RoleModel> _roleModels;
3087            private long _sampleUserId;
3088            private UserModel _sampleUserModel;
3089            private Format _simpleDateFormat =
3090                    FastDateFormatFactoryUtil.getSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
3091            private RoleModel _siteMemberRoleModel;
3092            private SimpleCounter _socialActivityCounter;
3093            private SimpleCounter _timeCounter;
3094            private RoleModel _userRoleModel;
3095            private SimpleCounter _userScreenNameCounter;
3096            private VirtualHostModel _virtualHostModel;
3097    
3098    }