at.spardat.xma.boot.comp.data.XMAResource Maven / Gradle / Ivy
/*******************************************************************************
* Copyright (c) 2003, 2007 s IT Solutions AT Spardat GmbH .
* 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
*
* Contributors:
* s IT Solutions AT Spardat GmbH - initial API and implementation
*******************************************************************************/
/*
* Created on : 04.2003
* Created by : s3595
*/
package at.spardat.xma.boot.comp.data;
import java.io.PrintStream;
import java.util.Locale;
import org.xml.sax.SAXException;
import at.spardat.xma.boot.cache.IFileCacheResource;
import at.spardat.xma.boot.comp.DTDStatics;
/**
*
* @author s3595 Chris Sch?fer (CGS)
* @version $Id: XMAResource.java 6993 2010-12-14 14:23:42Z webok $
*/
public class XMAResource {
/** Specifies the location of the resource */
private String href_;
/** Describes the version = hashValue of the .jar file */
private Version version_;
/** resource type */
private TypeID type_;
/** locale of the resource */
private Locale locale_;
/** reference to a file cache resource object */
private IFileCacheResource res_;
/** is the resource shared between applications */
private boolean shared_;
/** will this recource be loaded in fast development mode if contained in a component */
private boolean fdmload_;
/**
* Optional, defines the OS a resource is for, as in JNLP, see http://lopica.sourceforge.net/ref.html#resources
*/
private String os_;
/**
* Optional, defines the Architecture a resource is for, as in JNLP, see http://lopica.sourceforge.net/ref.html#resources
*/
private String arch_;
public XMAResource( String href, Version version, XMAResource.TypeID type, Locale locale, boolean shared, String os, String arch ) {
this.href_ = href;
this.version_ = version;
this.locale_ = locale;
this.type_ = type;
this.shared_ = shared;
this.os_ = os;
this.arch_ = arch;
}
/**
* write this object to a xml print stream.
*
* @param ps the PrintStream to write to
*/
public void writeXML( PrintStream ps ) {
ps.print( DTDStatics.OPEN + DTDStatics.RESOURCE );
ps.print( DTDStatics.SP + DTDStatics.RESOURCE_HREF + DTDStatics.QUOTE + this.href_ + DTDStatics.E_QUOTE );
ps.print( DTDStatics.SP + DTDStatics.RESOURCE_TYPE + DTDStatics.QUOTE + this.type_.getStringID() + DTDStatics.E_QUOTE );
ps.print( DTDStatics.SP + DTDStatics.RESOURCE_VERSION + DTDStatics.QUOTE + this.version_.getVersion() + DTDStatics.E_QUOTE );
if( locale_ != null ) {
ps.print( DTDStatics.SP + DTDStatics.RESOURCE_LOCALE + DTDStatics.QUOTE + this.locale_.toString() + DTDStatics.E_QUOTE );
}
if(shared_) {
ps.print(DTDStatics.SP + DTDStatics.RESOURCE_SHARED + DTDStatics.QUOTE + this.shared_ + DTDStatics.E_QUOTE);
}
if(fdmload_) {
ps.print(DTDStatics.SP + DTDStatics.RESOURCE_FDMLOAD + DTDStatics.QUOTE + this.fdmload_ + DTDStatics.E_QUOTE);
}
if( os_ != null ) {
ps.print( DTDStatics.SP + DTDStatics.RESOURCE_OSNAME + DTDStatics.QUOTE + this.os_.toString() + DTDStatics.E_QUOTE );
}
if( arch_ != null ) {
ps.print( DTDStatics.SP + DTDStatics.RESOURCE_OSARCH + DTDStatics.QUOTE + this.arch_.toString() + DTDStatics.E_QUOTE );
}
ps.print( DTDStatics.SP + DTDStatics.CLOSE_SIMPLES );
}
public static class TypeID {
private String strID;
public static String TYPE_JAR = "jar"; //$NON-NLS-1$
public static String TYPE_NATIVELIB = "lib"; //$NON-NLS-1$
// public String TYPE_FILE = "file";
public TypeID( String id ) {
strID = id;
}
public String getStringID() {
return strID;
}
public static TypeID getID( String id ) throws SAXException{
if ( id.equals(TypeID.TYPE_JAR ) ) {
return new TypeID(TypeID.TYPE_JAR);
} else if( id.equals(TypeID.TYPE_NATIVELIB)) {
return new TypeID(TypeID.TYPE_NATIVELIB);
} else
throw new SAXException( "parse error"); //$NON-NLS-1$
}
}
/**
* @return String href
*/
public String getHref_() {
return href_;
}
/**
* @return Locale locale
*/
public Locale getLocale_() {
return locale_;
}
/**
* @return TypeID typeid
*/
public TypeID getType_() {
return type_;
}
/**
* @return Version
*/
public Version getVersion_() {
return version_;
}
/**
* @return Returns if shared.
*/
public boolean isShared_() {
return shared_;
}
/**
* @param string href to set
*/
public void setHref_(String string) {
href_ = string;
}
/**
* @param locale locale to set
*/
public void setLocale_(Locale locale) {
locale_ = locale;
}
/**
* @param typeID
*/
public void setType_(TypeID typeID) {
type_ = typeID;
}
/**
* @param version
*/
public void setVersion_(Version version) {
version_ = version;
}
/**
* @return IFileCacheResource
*/
public IFileCacheResource getRes_() {
return res_;
}
/**
* @param resource
*/
public void setRes_(IFileCacheResource resource) {
res_ = resource;
}
/**
* @param shared The shared to set.
*/
public void setShared_(boolean shared) {
shared_ = shared;
}
/**
* @return true if this resource describes a jar-file
* @since 1.3.0
* @author s2877
*/
public boolean isJar() {
return TypeID.TYPE_JAR.equals(type_.strID);
}
/**
* @return true if this resource describes a dll-file
* @since 1.3.0
* @author s2877
*/
public boolean isNativeLib() {
return TypeID.TYPE_NATIVELIB.equals(type_.strID);
}
public boolean isFdmload() {
return fdmload_;
}
public void setFdmload(boolean fdmload) {
this.fdmload_ = fdmload;
}
/**
* Test if the property 'arch' fits to the current platform
* @return true if the arch property does not exist (null) or matches the value of the Java "os.arch", otherwise false
*/
public boolean isValidArch(){
String arch = System.getProperty("os.arch");
if(arch_ == null || arch_.equalsIgnoreCase(arch)){
return true;
}else {
return false;
}
}
/**
*
* Test if the property 'os' fits to the current platform
* see: http://lopica.sourceforge.net/ref.html#resources
* @return true if the os property does not exist (null) or matches the beginning of the value of the Java "os.name", otherwise false
*/
public boolean isValidOs(){
String os = System.getProperty("os.name");
if(os_ == null || os.startsWith(os_)){
return true;
}else {
return false;
}
}
}