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