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.datadictionary.mojo;
017
018import java.io.File;
019import java.util.Collection;
020import java.util.List;
021
022import org.apache.maven.plugin.AbstractMojo;
023import org.apache.maven.plugin.MojoExecutionException;
024
025import org.kuali.student.common.mojo.AbstractKSMojo;
026import org.kuali.student.contract.model.ServiceContractModel;
027import org.kuali.student.contract.model.impl.ServiceContractModelCache;
028import org.kuali.student.contract.model.impl.ServiceContractModelQDoxLoader;
029import org.kuali.student.contract.model.validation.ServiceContractModelValidator;
030import org.kuali.student.contract.writer.service.EachMethodServiceWriter;
031
032/**
033 * The plugin entrypoint which is used to generate a java interface file for each
034 * service method in the source files based on the contract definition
035 * @phase generate-sources
036 * @goal kseachmethodservicegenerator
037 */
038public class KSEachMethodServiceGeneratorrMojo extends AbstractKSMojo {
039
040    /**
041     * @parameter property="outputDirectory" default-value="${project.build.directory}/generated-sources"
042     */
043    private File outputDirectory;
044
045    public File getOutputDirectory() {
046        return outputDirectory;
047    }
048
049   
050    public void setOutputDirectory(File htmlDirectory) {
051        this.outputDirectory = htmlDirectory;
052    }
053
054       /**
055     * @parameter property="rootPackage" default-value="org.kuali.student.enrollment"
056     */
057    private String rootPackage;
058
059    public String getRootPackage() {
060        return rootPackage;
061    }
062
063    public void setRootPackage(String rootPackage) {
064        this.rootPackage = rootPackage;
065    }
066
067    
068    
069
070    @Override
071    public void execute() throws MojoExecutionException {
072        getLog().info("generating separate java interface files for each method in the service contracts");
073        ServiceContractModel model = this.getModel();
074        this.validate(model);
075        if (!outputDirectory.exists()) {
076            if (!outputDirectory.mkdirs()) {
077//                throw new MojoExecutionException("Could not create directory "
078                throw new IllegalArgumentException("Could not create directory "
079                        + this.outputDirectory.getPath());
080            }
081        }
082        String targetDirectory = this.outputDirectory.toString();
083        EachMethodServiceWriter instance =
084                new EachMethodServiceWriter(model,
085                targetDirectory,
086                rootPackage,
087                null);
088        instance.write();
089
090    }
091}