/**********************************************************************
* Copyright (c) 2005-2009 ant4eclipse project team.
*
* 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:
* Nils Hartmann, Daniel Kasmeroglu, Gerd Wuetherich
**********************************************************************/
package org.ant4eclipse.lib.pde.tools;
import org.ant4eclipse.lib.core.Assure;
import org.ant4eclipse.lib.jdt.internal.model.jre.JavaProfileReader;
import org.ant4eclipse.lib.pde.model.pluginproject.Constants;
import org.eclipse.core.runtime.internal.adaptor.EclipseEnvironmentInfo;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
/**
* TargetPlatformConfiguration --
*/
public class PlatformConfiguration {
/** - */
private boolean _preferProjects = true;
/** - */
private Map<Object, Object> _configurationProperties;
/** - */
private boolean _isLocked = false;
/**
*
*/
public PlatformConfiguration() {
this._preferProjects = true;
this._configurationProperties = new HashMap<Object, Object>();
this._configurationProperties.putAll(JavaProfileReader.getInstance().readDefaultProfile().getProperties());
this._configurationProperties.put(Constants.PROP_WS, EclipseEnvironmentInfo.getDefault().getWS());
this._configurationProperties.put(Constants.PROP_OS, EclipseEnvironmentInfo.getDefault().getOS());
this._configurationProperties.put(Constants.PROP_ARCH, EclipseEnvironmentInfo.getDefault().getOSArch());
this._configurationProperties.put(Constants.PROP_NL, EclipseEnvironmentInfo.getDefault().getNL());
}
public void setPreferProjects(boolean preferProjects) {
assertNotLocked();
this._preferProjects = preferProjects;
}
public void setOperatingSystem(String value) {
assertNotLocked();
this._configurationProperties.put(Constants.PROP_OS, value);
}
public void setArchitecture(String value) {
assertNotLocked();
this._configurationProperties.put(Constants.PROP_ARCH, value);
}
public void setWindowingSystem(String value) {
assertNotLocked();
this._configurationProperties.put(Constants.PROP_WS, value);
}
public void setProfileName(String value) {
assertNotLocked();
this._configurationProperties.put("osgi.java.profile.name", value);
}
public void setLanguageSetting(String value) {
assertNotLocked();
this._configurationProperties.put(Constants.PROP_NL, value);
}
public void lock() {
this._isLocked = true;
}
public boolean isPreferProjects() {
return this._preferProjects;
}
public Properties getConfigurationProperties() {
Properties result = new Properties();
Set<Map.Entry<Object, Object>> entrySet = this._configurationProperties.entrySet();
Iterator<Map.Entry<Object, Object>> iterator = entrySet.iterator();
while (iterator.hasNext()) {
Map.Entry<Object, Object> entry = iterator.next();
result.put(entry.getKey(), entry.getValue());
}
return result;
}
public String getProfileName() {
return (String) this._configurationProperties.get("osgi.java.profile.name");
}
public String getLanguageSetting() {
return (String) this._configurationProperties.get(Constants.PROP_NL);
}
public String getOperatingSystem() {
return (String) this._configurationProperties.get(Constants.PROP_OS);
}
public String getArchitecture() {
return (String) this._configurationProperties.get(Constants.PROP_ARCH);
}
public String getWindowingSystem() {
return (String) this._configurationProperties.get(Constants.PROP_WS);
}
/**
* {@inheritDoc}
*/
@Override
public int hashCode() {
int prime = 31;
int result = 1;
result = prime * result + ((this._configurationProperties == null) ? 0 : this._configurationProperties.hashCode());
result = prime * result + (this._preferProjects ? 1231 : 1237);
return result;
}
/**
* {@inheritDoc}
*/
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
PlatformConfiguration other = (PlatformConfiguration) obj;
if (this._configurationProperties == null) {
if (other._configurationProperties != null) {
return false;
}
} else if (!this._configurationProperties.equals(other._configurationProperties)) {
return false;
}
if (this._preferProjects != other._preferProjects) {
return false;
}
return true;
}
private void assertNotLocked() {
Assure.assertTrue(!this._isLocked, "TargetPlatformConfiguration is locked!");
}
// * org.osgi.framework.system.packages - the packages exported by the system bundle <br>
// * org.osgi.framework.executionenvironment - the comma separated list of supported execution environments <br>
// * osgi.resolverMode - the resolver mode. A value of "strict" will set the resolver mode to strict.<br>
// properties.put(Constants.PROP_WS, EclipseEnvironmentInfo.getDefault().getWS());
// properties.put(Constants.PROP_OS, EclipseEnvironmentInfo.getDefault().getOS());
// properties.put(Constants.PROP_ARCH, EclipseEnvironmentInfo.getDefault().getOSArch());
// properties.put(Constants.PROP_NL, EclipseEnvironmentInfo.getDefault().getNL());
// 'osgi.nl' -> 'de_DE'
// 'osgi.ws' -> 'win32'
// 'osgi.os' -> 'win32'
// 'osgi.arch' -> 'x86'
// 'osgi.java.profile.name' -> 'JavaSE-1.6'
// 'org.osgi.framework.executionenvironment' ->
// 'OSGi/Minimum-1.0,OSGi/Minimum-1.1,JRE-1.1,J2SE-1.2,J2SE-1.3,J2SE-1.4,J2SE-1.5,JavaSE-1.6'
// 'org.osgi.framework.bootdelegation' -> 'javax.*,org.ietf.jgss,org.omg.*,org.w3c.*,org.xml.*,sun.*,com.sun.*'
// 'org.osgi.framework.system.packages' ->
// 'javax.accessibility,javax.activation,javax.activity,javax.annotation,javax.annotation.processing,javax.crypto,javax.crypto.interfaces,javax.crypto.spec,javax.imageio,javax.imageio.event,javax.imageio.metadata,javax.imageio.plugins.bmp,javax.imageio.plugins.jpeg,javax.imageio.spi,javax.imageio.stream,javax.jws,javax.jws.soap,javax.lang.model,javax.lang.model.element,javax.lang.model.type,javax.lang.model.util,javax.management,javax.management.loading,javax.management.modelmbean,javax.management.monitor,javax.management.openmbean,javax.management.relation,javax.management.remote,javax.management.remote.rmi,javax.management.timer,javax.naming,javax.naming.directory,javax.naming.event,javax.naming.ldap,javax.naming.spi,javax.net,javax.net.ssl,javax.print,javax.print.attribute,javax.print.attribute.standard,javax.print.event,javax.rmi,javax.rmi.CORBA,javax.rmi.ssl,javax.script,javax.security.auth,javax.security.auth.callback,javax.security.auth.kerberos,javax.security.auth.login,javax.security.auth.spi,javax.security.auth.x500,javax.security.cert,javax.security.sasl,javax.sound.midi,javax.sound.midi.spi,javax.sound.sampled,javax.sound.sampled.spi,javax.sql,javax.sql.rowset,javax.sql.rowset.serial,javax.sql.rowset.spi,javax.swing,javax.swing.border,javax.swing.colorchooser,javax.swing.event,javax.swing.filechooser,javax.swing.plaf,javax.swing.plaf.basic,javax.swing.plaf.metal,javax.swing.plaf.multi,javax.swing.plaf.synth,javax.swing.table,javax.swing.text,javax.swing.text.html,javax.swing.text.html.parser,javax.swing.text.rtf,javax.swing.tree,javax.swing.undo,javax.tools,javax.transaction,javax.transaction.xa,javax.xml,javax.xml.bind,javax.xml.bind.annotation,javax.xml.bind.annotation.adapters,javax.xml.bind.attachment,javax.xml.bind.helpers,javax.xml.bind.util,javax.xml.crypto,javax.xml.crypto.dom,javax.xml.crypto.dsig,javax.xml.crypto.dsig.dom,javax.xml.crypto.dsig.keyinfo,javax.xml.crypto.dsig.spec,javax.xml.datatype,javax.xml.namespace,javax.xml.parsers,javax.xml.soap,javax.xml.stream,javax.xml.stream.events,javax.xml.stream.util,javax.xml.transform,javax.xml.transform.dom,javax.xml.transform.sax,javax.xml.transform.stax,javax.xml.transform.stream,javax.xml.validation,javax.xml.ws,javax.xml.ws.handler,javax.xml.ws.handler.soap,javax.xml.ws.http,javax.xml.ws.soap,javax.xml.ws.spi,javax.xml.xpath,org.ietf.jgss,org.omg.CORBA,org.omg.CORBA_2_3,org.omg.CORBA_2_3.portable,org.omg.CORBA.DynAnyPackage,org.omg.CORBA.ORBPackage,org.omg.CORBA.portable,org.omg.CORBA.TypeCodePackage,org.omg.CosNaming,org.omg.CosNaming.NamingContextExtPackage,org.omg.CosNaming.NamingContextPackage,org.omg.Dynamic,org.omg.DynamicAny,org.omg.DynamicAny.DynAnyFactoryPackage,org.omg.DynamicAny.DynAnyPackage,org.omg.IOP,org.omg.IOP.CodecFactoryPackage,org.omg.IOP.CodecPackage,org.omg.Messaging,org.omg.PortableInterceptor,org.omg.PortableInterceptor.ORBInitInfoPackage,org.omg.PortableServer,org.omg.PortableServer.CurrentPackage,org.omg.PortableServer.POAManagerPackage,org.omg.PortableServer.POAPackage,org.omg.PortableServer.portable,org.omg.PortableServer.ServantLocatorPackage,org.omg.SendingContext,org.omg.stub.java.rmi,org.w3c.dom,org.w3c.dom.bootstrap,org.w3c.dom.css,org.w3c.dom.events,org.w3c.dom.html,org.w3c.dom.ls,org.w3c.dom.ranges,org.w3c.dom.stylesheets,org.w3c.dom.traversal,org.w3c.dom.views
// ,org.xml.sax,org.xml.sax.ext,org.xml.sax.helpers'
}