rrenkert@33: package de.intevation.mxd; rrenkert@25: rrenkert@25: import java.io.IOException; rrenkert@103: import java.io.File; rrenkert@103: rrenkert@103: import org.apache.log4j.Logger; rrenkert@25: rrenkert@25: import com.esri.arcgis.system.AoInitialize; rrenkert@25: import com.esri.arcgis.system.EngineInitializer; rrenkert@25: import com.esri.arcgis.system.esriLicenseProductCode; rrenkert@25: import com.esri.arcgis.system.esriLicenseStatus; rrenkert@25: rrenkert@25: /** rrenkert@25: * Initializes the ArcGIS Engine and Objects. rrenkert@25: * rrenkert@25: * @author Raimund Renkert rrenkert@25: */ rrenkert@43: public class ArcGISInitializer { rrenkert@25: rrenkert@43: /** rrenkert@103: * The Logger. rrenkert@103: */ rrenkert@103: private static final Logger logger = Logger.getLogger(ArcGISInitializer.class); rrenkert@103: rrenkert@103: /** rrenkert@43: * Private member. rrenkert@43: */ rrenkert@25: private AoInitialize aoInit; rrenkert@25: private String engineInstallDir = ""; rrenkert@25: rrenkert@25: rrenkert@25: /** rrenkert@25: * Init ArcGIS Java Objects. rrenkert@25: */ rrenkert@43: public boolean initArcGIS () rrenkert@43: throws IOException { rrenkert@103: logger.debug("initArcGIS()"); rrenkert@25: EngineInitializer.initializeEngine(); rrenkert@25: aoInit = new AoInitialize(); rrenkert@25: engineInstallDir = System.getenv("AGSENGINEJAVA"); rrenkert@103: File installDir = new File(engineInstallDir); rrenkert@103: if(!installDir.exists()) { rrenkert@103: engineInstallDir = System.getenv("AGSDESKTOPJAVA"); rrenkert@103: installDir = new File(engineInstallDir); rrenkert@103: if(!installDir.exists()) { rrenkert@103: logger.error("Could not find ArcGIS Environment. \n" + rrenkert@103: "AGSENGINEJAVA or AGSDESKTOPJAVA not set."); rrenkert@103: return false; rrenkert@103: } rrenkert@103: } rrenkert@103: else { rrenkert@103: return true; rrenkert@103: } rrenkert@25: return true; rrenkert@25: } rrenkert@25: rrenkert@25: /** rrenkert@25: * Init ArcGIS License. rrenkert@25: */ rrenkert@103: public boolean initArcGISLicenses() rrenkert@43: throws IOException { rrenkert@103: logger.debug("initArcGISLicenses()"); rrenkert@25: if(aoInit.isProductCodeAvailable rrenkert@25: (esriLicenseProductCode.esriLicenseProductCodeEngine) == rrenkert@43: esriLicenseStatus.esriLicenseAvailable) { rrenkert@25: aoInit.initialize rrenkert@25: (esriLicenseProductCode.esriLicenseProductCodeEngine); rrenkert@25: } rrenkert@25: else if (aoInit.isProductCodeAvailable rrenkert@25: (esriLicenseProductCode.esriLicenseProductCodeArcView) == rrenkert@43: esriLicenseStatus.esriLicenseAvailable) { rrenkert@25: aoInit.initialize rrenkert@25: (esriLicenseProductCode.esriLicenseProductCodeArcView); rrenkert@25: } rrenkert@43: else { rrenkert@103: logger.error("Engine Runtime or ArcView" + rrenkert@103: " license not initialized.\n" + rrenkert@103: "Please install an ArcGIS product and set the" + rrenkert@103: " PATH-variable correctly."); rrenkert@103: return false; rrenkert@25: } rrenkert@103: return true; rrenkert@25: } rrenkert@25: rrenkert@25: /** rrenkert@25: * Shutdown the ArcGIS Objects. rrenkert@25: */ rrenkert@43: public boolean shutdownArcGIS() rrenkert@43: throws IOException { rrenkert@43: if(aoInit != null) { rrenkert@25: aoInit.shutdown(); rrenkert@25: return true; rrenkert@25: } rrenkert@43: else { rrenkert@25: return false; rrenkert@25: } rrenkert@25: } rrenkert@25: rrenkert@25: /** rrenkert@25: * Get the ArcGIS Engine Directory. rrenkert@25: */ rrenkert@43: public String getEngineDirectory() rrenkert@43: throws Exception { rrenkert@43: if(engineInstallDir == "") { rrenkert@25: throw new Exception("Call initArcGIS() first!"); rrenkert@43: } rrenkert@43: else { rrenkert@25: return engineInstallDir; rrenkert@43: } rrenkert@25: } rrenkert@25: }