blob: 3ccbac79fc1c64ecc339eca93392d14bf151d855 [file] [log] [blame]
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;
}
}