/*******************************************************************************
* Copyright (c) May 18, 2011 Zend Technologies Ltd.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
package org.zend.sdklib.internal.project;
import java.io.IOException;
import java.io.OutputStream;
import javax.xml.bind.JAXBException;
import javax.xml.bind.PropertyException;
import org.zend.sdklib.descriptor.pkg.Dependencies;
import org.zend.sdklib.descriptor.pkg.Dependencies.Required;
import org.zend.sdklib.descriptor.pkg.ObjectFactory;
import org.zend.sdklib.descriptor.pkg.Package;
import org.zend.sdklib.descriptor.pkg.Version;
import org.zend.sdklib.descriptor.pkg.Zendframework;
import org.zend.sdklib.internal.utils.JaxbHelper;
/**
* Writes a simple descriptor to a given printStream
*
* @author Roy, 2011
*
*/
public class DescriptorWriter {
private String appName;
private String appDir = "data";
private String descriptorVersion = "1.0";
private String appVersion = "1.0.0";
private String type;
private String docroot;
private String summary;
private String zfMin;
private String zfMax;
private String scripts;
/**
* @param appName
* @param appDir
* @param summary
* @param appVersion
*/
public DescriptorWriter(String appName, String appDir, String scripts,
String appVersion) {
super();
this.appName = appName;
this.appDir = appDir;
this.scripts = scripts;
this.appVersion = appVersion;
}
/**
* @param docroot
* the docroot to set
*/
public final void setDocroot(String docroot) {
this.docroot = docroot;
}
/**
* @param descriptorVersion
* the descriptorVersion to set
*/
public final void setDescriptorVersion(String descriptorVersion) {
this.descriptorVersion = descriptorVersion;
}
/**
* @param summary
* the summary to set
*/
public final void setSummary(String summary) {
this.summary = summary;
}
/**
* @param appVersion
* the appVersion to set
*/
public final void setAppVersion(String appVersion) {
this.appVersion = appVersion;
}
/**
* @param zfMin
* the zfMin to set
*/
public final void setZfMinMax(String zfMin, String zfMax) {
this.zfMin = zfMin;
this.zfMax = zfMax;
}
/**
* @param scripts
* the script dir to use
*/
public void setScripts(String scripts) {
this.scripts = scripts;
}
/**
* @param outStream
* @throws PropertyException
* @throws JAXBException
* @throws IOException
*/
public void write(OutputStream outStream) throws PropertyException,
JAXBException, IOException {
final Package p = createZendPackae();
JaxbHelper.marshalPackage(outStream, p);
}
private Package createZendPackae() {
ObjectFactory f = new ObjectFactory();
final Package p = f.createPackage();
p.setName(appName);
p.setType(type);
p.setAppdir(appDir);
if (docroot != null)
p.setDocroot(docroot);
p.setDescriptorVersion(descriptorVersion);
if (scripts != null)
p.setScriptsdir(scripts);
if (summary != null)
p.setSummary(summary);
final Version v = f.createVersion();
v.setRelease(appVersion);
p.setVersion(v);
if (zfMax != null) {
final Zendframework z = f.createZendframework();
z.setMin(zfMin);
z.setMax(zfMax);
final Required r = f.createDependenciesRequired();
r.getZendframework().add(z);
final Dependencies d = f.createDependencies();
d.setRequired(r);
p.setDependencies(d);
}
return p;
}
}