package org.apache.ideaplugin.bean; | |
import java.io.File; | |
import java.io.FileNotFoundException; | |
import java.io.FileWriter; | |
import java.io.IOException; | |
import java.util.ArrayList; | |
import java.util.Calendar; | |
/* | |
* Copyright 2004,2005 The Apache Software Foundation. | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
* | |
* | |
*/ | |
/** | |
* Author: Deepal Jayasinghe | |
* Date: Sep 17, 2005 | |
* Time: 11:40:40 PM | |
*/ | |
public class ArchiveBean { | |
private boolean singleService = false; | |
private boolean generetServiceDesc = false; | |
private ArrayList classLocation = new ArrayList(); | |
private File classLoc; | |
private ClassLoader classLoader; | |
private String ServiceXML; | |
public String fileSeparator = System.getProperty("file.separator"); | |
private ArrayList libs = new ArrayList(); | |
private ArrayList tempLibs = new ArrayList(); | |
private ArrayList tempWsdls = new ArrayList(); | |
private ArrayList wsdls = new ArrayList(); | |
private String outPath; | |
private String archiveName; | |
private ArrayList servicelsit = new ArrayList(); | |
public ArrayList getTempWsdls() { | |
return tempWsdls; | |
} | |
public void setTempWsdls(ArrayList tempWsdls) { | |
this.tempWsdls = tempWsdls; | |
} | |
public ArrayList getTempLibs() { | |
return tempLibs; | |
} | |
public void setTempLibs(ArrayList tempLibs) { | |
this.tempLibs = tempLibs; | |
} | |
public File getClassLoc() { | |
return classLoc; | |
} | |
public void setClassLoc(File classLoc) { | |
this.classLoc = classLoc; | |
} | |
public ArrayList getServicelsit() { | |
return servicelsit; | |
} | |
public void addToServicelsit(ServiceObj service) { | |
for (int count =0;count<servicelsit.size();count++) | |
{ | |
if (((ServiceObj)servicelsit.get(count)).getServiceName().equalsIgnoreCase(service.getServiceName())) | |
{ | |
servicelsit.remove(count); | |
servicelsit.add(service); | |
return; | |
} | |
} | |
servicelsit.add(service); | |
} | |
public boolean isSingleService() { | |
return singleService; | |
} | |
public void setSingleService(boolean singleService) { | |
this.singleService = singleService; | |
} | |
public boolean isGeneretServiceDesc() { | |
return generetServiceDesc; | |
} | |
public void setGeneretServiceDesc(boolean generetServiceDesc) { | |
this.generetServiceDesc = generetServiceDesc; | |
} | |
public ArrayList getClassLocation() { | |
return classLocation; | |
} | |
public void addClassLocation(File classLocation) { | |
this.classLocation.add(classLocation); | |
} | |
public String getServiceXML() { | |
return ServiceXML; | |
} | |
public void setServiceXML(String serviceXML) { | |
ServiceXML = serviceXML; | |
} | |
public ArrayList getLibs() { | |
return libs; | |
} | |
public void addLibs(ArrayList libs) { | |
this.libs.addAll(libs); | |
} | |
public ArrayList getWsdls() { | |
return wsdls; | |
} | |
public void addWsdls(ArrayList wsdls) { | |
this.wsdls.addAll(wsdls); | |
} | |
public String getOutPath() { | |
return outPath; | |
} | |
public void setOutPath(String outPath) { | |
this.outPath = outPath; | |
} | |
public String getArchiveName() { | |
return archiveName; | |
} | |
public void setArchiveName(String archiveName) { | |
this.archiveName = archiveName; | |
} | |
public void finsh() throws Exception { | |
//Creating out File | |
try { | |
File outFile = new File(getOutPath()); | |
String time = Calendar.getInstance().getTime().toString().replace(':', '-'); | |
File tempfile = new File(outFile, "temp-" + time); | |
tempfile.mkdir(); | |
//creating META-INF | |
File metainf = new File(tempfile, "META-INF"); | |
if (!metainf.exists()) { | |
metainf.mkdir(); | |
} | |
// Writing services.xml | |
File servicexml = new File(metainf, "services.xml"); | |
FileWriter writer = new FileWriter(servicexml); | |
writer.write(getServiceXML()); | |
writer.flush(); | |
writer.close(); | |
//Coping class files | |
FileCopier fc = new FileCopier(); | |
for (int count=0;count<classLocation.size();count++) | |
fc.copyFiles((File)classLocation.get(count), tempfile, null); | |
// Coping wsdl files | |
File lib = new File(tempfile, "lib"); | |
if (!lib.exists()) { | |
lib.mkdir(); | |
} | |
if (libs!=null) | |
{ | |
for (int i = 0; i < libs.size(); i++) { | |
String libname = (String) libs.get(i); | |
fc.copyFiles(new File(libname), lib, null); | |
} | |
} | |
//coping wsdl files | |
if (wsdls!=null) | |
for (int i = 0; i < wsdls.size(); i++) { | |
String libname = (String) wsdls.get(i); | |
fc.copyFiles(new File(libname), metainf, null); | |
} | |
String arcivename = getArchiveName(); | |
if (arcivename.indexOf(".aar") < 0) { | |
arcivename = arcivename + ".aar"; | |
} | |
JarFileWriter jwriter = new JarFileWriter(); | |
jwriter.writeJarFile(outFile, arcivename, tempfile); | |
//craeting the jar file | |
deleteDir(tempfile); | |
// | |
} catch (Exception e) { | |
throw e; | |
} | |
} | |
private boolean deleteDir(File dir) { | |
if (dir.isDirectory()) { | |
String[] children = dir.list(); | |
for (int i = 0; i < children.length; i++) { | |
boolean success = deleteDir(new File(dir, children[i])); | |
if (!success) { | |
return false; | |
} | |
} | |
} | |
// The directory is now empty so delete it | |
return dir.delete(); | |
} | |
public ClassLoader getClassLoader() { | |
return classLoader; | |
} | |
public void setClassLoader(ClassLoader classLoader) { | |
this.classLoader = classLoader; | |
} | |
} |