001 /* 002 * ---------------------------------------------------------------------- 003 * Copyright (C) 2009 Enrique Lara (k957@68k.org) 004 * 005 * TinLizard is free software; you can redistribute it and/or 006 * modify it under the terms of the GNU Lesser General Public License 007 * as published by the Free Software Foundation; either version 3.0 008 * of the License, or (at your option) any later version. 009 * 010 * TinLizard is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 013 * GNU Lesser General Public License for more details. 014 * 015 * You should have received a copy of the GNU Lesser General Public License 016 * along with TinLizard. If not, see http://www.gnu.org/licenses/. 017 * ---------------------------------------------------------------------- 018 */ 019 package tinlizard.dataload; 020 021 import tinlizard.dao.jpa.JpaDao; 022 023 import tinlizard.model.Codeline; 024 import tinlizard.model.Dependency; 025 import tinlizard.model.Policy; 026 import tinlizard.model.Project; 027 import tinlizard.model.User; 028 import tinlizard.model.View; 029 030 /** 031 * Utility Class to load test data. 032 */ 033 public final class DataLoader implements Runnable { 034 private final JpaDao dao = JpaDao.getInstance(); 035 private final Data data = new Data(); 036 037 public Data loadTestData() { 038 loadUserData(); 039 loadPolicyData(); 040 loadViewData(); 041 loadProjectData(); 042 043 dao.flush(); 044 045 return data; 046 } 047 048 private void loadUserData() { 049 data.systemUser = addUser("SYSTEM"); 050 data.userUser = addUser("user"); 051 data.jqhaxorUser = addUser("jqhaxor"); 052 data.adminUser = addUser("admin"); 053 } 054 055 private User addUser(final String name) { 056 User user = new User(); 057 user.setName(name); 058 dao.add(user); 059 060 return user; 061 } 062 063 private void loadPolicyData() { 064 data.retiredPolicy = addPolicy("RETIRED", "These codelines should no longer be used.", false); 065 data.devPolicy = addPolicy("DEV", "Under active development, code checked in must be buildable.", true); 066 data.releasePolicy = addPolicy("RELEASE", "Released Software, code checked in must build and pass regression tests; changes should be limited to bug fixes.", true); 067 } 068 069 private void loadProjectData() { 070 data.tinlizardProject = addProject(Data.TIN_LIZARD, Data.TIN_LIZARD_SCM_URL, "default", data.rewriteView); 071 072 data.jmorseProject = addProject(Data.JMORSE, Data.JMORSE_SCM_URL, "HEAD", data.rewriteView); 073 074 Codeline pb = addCodeline(data.jmorseProject, data.defaultRetiredView, data.retiredPolicy, Data.JMORSE_SCM_URL, "TEST_BRANCH", false); 075 Dependency dep = new Dependency(); 076 dep.setCodeline(pb); 077 dep.setGroupId(Data.TIN_LIZARD); 078 dep.setArtifactId(Data.TIN_LIZARD); 079 dep.setVersion("default-SNAPSHOT"); 080 pb.addDependency(dep); 081 dao.add(dep); 082 083 data.mavenWarPluginProject = addProject(Data.MAVEN_WAR_PLUGIN, Data.MAVEN_WAR_PLUGIN_SCM_URL, "trunk", data.defaultView); 084 data.mavenScmHGPluginProject = addProject(Data.MAVEN_SCM_HG_PLUGIN, Data.MAVEN_SCM_HG_PLUGIN_SCM_URL, "trunk", data.defaultView); 085 } 086 087 private Project addProject(final String name, final String scmConnection, final String mainLineName, final View c) { 088 Project p = new Project(); 089 p.setName(name); 090 p.setDescription(name + " is a rockn' project."); 091 dao.add(p); 092 093 addCodeline(p, c, data.devPolicy, scmConnection, mainLineName, true); 094 095 return p; 096 } 097 098 private Codeline addCodeline(final Project p, final View view, final Policy policy, final String scmConnection, final String codelineName, final boolean isMainLine) { 099 Codeline codeline = new Codeline(); 100 101 codeline.setName(codelineName); 102 codeline.setDescription("This codeline will bring the heat"); 103 codeline.setScmConnection(scmConnection); 104 codeline.setMainLine(isMainLine); 105 codeline.setGroupId(p.getName()); 106 codeline.setArtifactId(p.getName()); 107 codeline.setVersion(codelineName + "-SNAPSHOT"); 108 codeline.setOwner(data.systemUser); 109 codeline.setPolicy(policy); 110 codeline.setView(view); 111 codeline.setProject(p); 112 dao.add(codeline); 113 114 return codeline; 115 } 116 117 private void loadViewData() { 118 data.defaultView = addView("Default", "Default View."); 119 data.rewriteView = addView("RewriteStack1", "Re-Write of components implemented in foo to use jBar."); 120 data.defaultRetiredView = addView("DefaultRetired", "Default location for codelines that are not in active use."); 121 } 122 123 private View addView(final String name, final String description) { 124 View c = new View(); 125 c.setName(name); 126 c.setDescription(description); 127 dao.add(c); 128 129 return c; 130 } 131 132 private Policy addPolicy(final String name, final String description, final boolean active) { 133 Policy policy = new Policy(); 134 policy.setName(name); 135 policy.setDescription(description); 136 policy.setActive(active); 137 dao.add(policy); 138 139 return policy; 140 } 141 142 public void run() { 143 loadTestData(); 144 } 145 }