001/**
002 * Copyright 2004-2014 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.kuali.student.mock.mojo;
017
018import java.util.ArrayList;
019import java.util.HashMap;
020import java.util.List;
021import java.util.Map;
022
023import org.apache.maven.plugin.MojoExecutionException;
024import org.apache.maven.plugin.MojoFailureException;
025import org.apache.maven.project.MavenProject;
026import org.kuali.student.admin.ui.mojo.KSCreateAdminUiMojo;
027import org.kuali.student.common.mojo.AbstractKSMojo;
028import org.kuali.student.contract.model.ServiceContractModel;
029import org.kuali.student.contract.model.impl.ServiceContractModelPescXsdLoader;
030import org.kuali.student.contract.model.util.ServicesFilterByKeys;
031import org.slf4j.Logger;
032import org.slf4j.LoggerFactory;
033
034/**
035 *
036 * @author nwright
037 * 
038 *  @goal kscreatemock
039 *  @phase site
040 *  @requiresProject true
041 */
042public class KSCreateMockImplMojo extends AbstractKSMojo {
043
044    private static Logger log = LoggerFactory.getLogger(KSCreateMockImplMojo.class);
045    
046    public KSCreateMockImplMojo() {
047    }
048 
049    private String targetDir;
050
051    public String getTargetDir() {
052        return targetDir;
053    }
054
055    public void setTargetDir(String targetDir) {
056        this.targetDir = targetDir;
057    }
058    
059    
060    
061    @Override
062        public void execute() throws MojoExecutionException, MojoFailureException {
063        ServiceContractModel model = getModel();
064        validate(model);
065        if (targetDir == null) {
066            targetDir = "target/generated-mock-impls";
067        }
068        List<String> servKeys = new ArrayList<String>();
069//        servKeys.add("AcademicCalendar");
070        servKeys.add("AcademicRecord");
071//        servKeys.add("Appointment");
072//        servKeys.add("Atp");
073//        servKeys.add("BatchJobResult");
074//        servKeys.add("Clu");
075//        servKeys.add("Comment");
076//        servKeys.add("CourseOffering");
077//        servKeys.add("CourseOfferingSet");
078//        servKeys.add("CourseRegistration");
079//        servKeys.add("Course");
080//        servKeys.add("CourseWaitlist");
081//        servKeys.add("DataDictionary");
082//        servKeys.add("Document");
083//        servKeys.add("EnumerationManagement");
084//        servKeys.add("Exemption");
085//        servKeys.add("Fee");
086//        servKeys.add("Grading");
087//        servKeys.add("Hold");
088//        servKeys.add("LRC");
089//        servKeys.add("LearningObjective");
090//        servKeys.add("LearningResultRecord");
091//        servKeys.add("LprRoster");
092//        servKeys.add("Lpr");
093//        servKeys.add("Lui");
094//        servKeys.add("Message");
095//        servKeys.add("Organization");
096//        servKeys.add("Population");
097//        servKeys.add("Process");
098//        servKeys.add("Program");
099//        servKeys.add("Proposal");
100//        servKeys.add("Room");
101//        servKeys.add("Scheduling");
102//        servKeys.add("Search");
103//        servKeys.add("State");
104//        servKeys.add("Statement");
105//        servKeys.add("Type");
106//        servKeys.add("VersionManagement");
107//        servKeys.add("Type");
108//        servKeys.add("State");
109//        servKeys.add("RICE.Permission");
110//        servKeys.add("RICE.Role");
111        ServicesFilterByKeys filter = new ServicesFilterByKeys(servKeys);
112        boolean isR1 = false;
113        MockImplWriter instance =
114                new MockImplWriter(model,
115                targetDir,
116                MockImplWriter.ROOT_PACKAGE,
117                filter,
118                isR1);
119        instance.write();
120
121    }
122    
123    
124    
125    private static final String CORE_DIRECTORY = "D:/svn/ks/services/ks-api/ks-core-api/src/main";
126    // "C:/svn/maven-dictionary-generator/trunk/src/main/java/org/kuali/student/core";
127    private static final String COMMON_DIRECTORY = "D:/svn/ks/services/ks-api/ks-common-api/src/main/java";
128    private static final String ENROLL_DIRECTORY = "D:/svn/ks/services/ks-api/ks-enroll-api/src/main/java";
129    private static final String LUM_DIRECTORY = "D:/svn/ks/services/ks-api/ks-lum-api/src/main/java";
130    private static final String RICE_CORE_API_DIRECTORY = "D:/svn/rice/rice-2.2.0/core/api/src/main/java";
131    private static final String RICE_KIM_API_DIRECTORY = "D:/svn/rice/rice-2.2.0/kim/kim-api/src/main/java";
132    private static final String RICE_KRMS_API_DIRECTORY = "D:/svn/rice/rice-2.2.0/krms/api/src/main/java";
133    private static final String TEST_SOURCE_DIRECTORY =
134            "src/test/java/org/kuali/student/contract/model/test/source";
135    private static final String TARGET_GENERATED_SOURCES = "target/generated-sources";
136    private static final String STANDALONE_MAIN_DIRECTORY = "D:/svn/ks/ks-standalone-admin-app/src/main";
137    private static final String SERVICES_ENROLL_IMPL = "D:/svn/ks/services/ks-enroll/ks-enroll-impl/src/main/java";
138    private static final String CM_CORE_API = "D:/svn/ks/CM-2.0/ks-api/ks-core-api/src/main/java";
139    private static final String TRUNK_CORE_IMPL = "D:/svn/ks/trunk/ks-core/ks-core-impl/src/main/java";
140    private static final String TRUNK_ENROLL_IMPL = "D:/svn/ks/trunk/ks-enroll/ks-enroll-impl/src/main/java";
141    private static final String BC_INTEGRATION_FMS_UTIL = "D:/svn/BCAll/Student/trunk/BC-KS-Integrations/bc-integration-master/bc-ksa-fms-integration/src/main/java";
142    private static final String TRUNK_ENROLL_IMPL_KRMS_API = "D:/svn/ks/trunk/ks-enroll/ks-enroll-impl/src/main/java/org/kuali/rice/krms/api";
143                                                   
144
145    public static void main(String[] args) {
146        log.info("execute");
147        List<String> srcDirs = new ArrayList<String>();
148        srcDirs.add(COMMON_DIRECTORY);
149        srcDirs.add(CORE_DIRECTORY);
150        srcDirs.add(LUM_DIRECTORY);
151        srcDirs.add(ENROLL_DIRECTORY);
152//        srcDirs.add(RICE_KIM_API_DIRECTORY);
153//        srcDirs.add(RICE_CORE_API_DIRECTORY);
154//        srcDirs.add(RICE_KRMS_API_DIRECTORY);
155//        srcDirs.add(TRUNK_ENROLL_IMPL_KRMS_API);
156        KSCreateMockImplMojo instance = new KSCreateMockImplMojo();
157        Map pluginContext = new HashMap();
158        MavenProject project = new MavenProject();
159        pluginContext.put("project", project);
160        instance.setPluginContext(pluginContext);
161        instance.setSourceDirs(srcDirs);
162//        instance.setTargetDir(SERVICES_ENROLL_IMPL);
163//        instance.setTargetDir(CM_CORE_API);
164        instance.setTargetDir(BC_INTEGRATION_FMS_UTIL);
165        try {
166            instance.execute();
167            //        assertTrue(new File(instance.getOutputDirectory() + "/" + "ks-LprInfo-dictionary.xml").exists());  
168        } catch (MojoExecutionException ex) {
169            throw new RuntimeException(ex);
170        } catch (MojoFailureException ex) {
171            throw new RuntimeException(ex);
172        }
173    }
174}