You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by al...@apache.org on 2007/03/14 19:04:33 UTC

svn commit: r518251 - /incubator/uima/uimaj/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/cpm/CpmPanel.java

Author: alally
Date: Wed Mar 14 11:04:32 2007
New Revision: 518251

URL: http://svn.apache.org/viewvc?view=rev&rev=518251
Log:
Add CPE Descriptor support for <import>.
UIMA-341: http://issues.apache.org/jira/browse/UIMA-341


Modified:
    incubator/uima/uimaj/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/cpm/CpmPanel.java

Modified: incubator/uima/uimaj/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/cpm/CpmPanel.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/cpm/CpmPanel.java?view=diff&rev=518251&r1=518250&r2=518251
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/cpm/CpmPanel.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/cpm/CpmPanel.java Wed Mar 14 11:04:32 2007
@@ -33,6 +33,9 @@
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -79,6 +82,8 @@
 import org.apache.uima.collection.metadata.CpeCollectionReaderIterator;
 import org.apache.uima.collection.metadata.CpeDescription;
 import org.apache.uima.collection.metadata.CpeDescriptorException;
+import org.apache.uima.resource.ResourceConfigurationException;
+import org.apache.uima.resource.ResourceManager;
 import org.apache.uima.resource.ResourceSpecifier;
 import org.apache.uima.resource.URISpecifier;
 import org.apache.uima.resource.metadata.ResourceMetaData;
@@ -213,6 +218,8 @@
   private JMenuItem viewCasInitializerPanelMenuItem;
 
   private CpeDescription currentCpeDesc = createEmptyCpeDescription();
+  
+  private final ResourceManager defaultResourceManager = UIMAFramework.newDefaultResourceManager();
 
   public CpmPanel() {
     super();
@@ -1134,11 +1141,24 @@
   }
 
   private boolean populateCollectionReaderPanel(CpeCollectionReaderIterator cpeColRdr)
-          throws InvalidXMLException, IOException {
+          throws InvalidXMLException, IOException, ResourceConfigurationException {
     try {
+      URL specifierUrl = null;
       String specifierFile = null;
       if (cpeColRdr != null) {
-        specifierFile = cpeColRdr.getDescriptor().getInclude().get();
+        specifierUrl = cpeColRdr.getDescriptor().findAbsoluteUrl(defaultResourceManager);
+        //CPE GUI only supports file URLs
+        if (!"file".equals(specifierUrl.getProtocol())) {
+          displayError("Could not load descriptor from URL " + specifierUrl.toString() + 
+                  ".  CPE Configurator only supports file: URLs");
+          return false;
+        }  
+        try {
+          specifierFile = new File(new URI(specifierUrl.toString())).toString();
+        } catch (URISyntaxException e) {
+          displayError(e);
+          return false;
+        }
       }
 
       if (collectionReaderPanel.getNrComponents() == 0) {
@@ -1181,11 +1201,24 @@
   }
 
   private boolean populateCasInitializerPanel(CpeCollectionReaderCasInitializer cpeCasIni)
-          throws InvalidXMLException, IOException {
+          throws InvalidXMLException, IOException, ResourceConfigurationException {
     try {
+      URL specifierUrl = null;
       String specifierFile = null;
       if (cpeCasIni != null) {
-        specifierFile = cpeCasIni.getDescriptor().getInclude().get();
+        specifierUrl = cpeCasIni.getDescriptor().findAbsoluteUrl(defaultResourceManager);
+        //CPE GUI only supports file URLs
+        if (!"file".equals(specifierUrl.getProtocol())) {
+          displayError("Could not load descriptor from URL " + specifierUrl.toString() + 
+                  ".  CPE Configurator only supports file: URLs");
+          return false;
+        }  
+        try {
+          specifierFile = new File(new URI(specifierUrl.toString())).toString();
+        } catch (URISyntaxException e) {
+          displayError(e);
+          return false;
+        }
       }
 
       if (casInitializerPanel.getNrComponents() == 0) {
@@ -1230,7 +1263,7 @@
   }
 
   private void addAE(String aeSpecifierFile) throws CpeDescriptorException, InvalidXMLException,
-          IOException {
+          IOException, ResourceConfigurationException {
     String tempAeName = new File(aeSpecifierFile).getName(); // overriden later
     CpeCasProcessor casProc = CpeDescriptorFactory.produceCasProcessor(tempAeName);
     casProc.setDescriptor(aeSpecifierFile);
@@ -1245,11 +1278,23 @@
   }
 
   private void addAE(CpeCasProcessor cpeCasProc) throws CpeDescriptorException,
-          InvalidXMLException, IOException {
-    String aeSpecifierFile = cpeCasProc.getDescriptor();
-    File f = new File(aeSpecifierFile);
+          InvalidXMLException, IOException, ResourceConfigurationException {
+    URL aeSpecifierUrl = cpeCasProc.getCpeComponentDescriptor().findAbsoluteUrl(defaultResourceManager);
+    //CPE GUI only supports file URLs
+    if (!"file".equals(aeSpecifierUrl.getProtocol())) {
+      displayError("Could not load descriptor from URL " + aeSpecifierUrl.toString() + 
+              ".  CPE Configurator only supports file: URLs");
+      return;
+    }  
+    File f;
+    try {
+      f = new File(new URI(aeSpecifierUrl.toString()));
+    } catch (URISyntaxException e) {
+      displayError(e);
+      return;
+    }
     long fileModStamp = f.lastModified(); // get mod stamp before parsing, to prevent race condition
-    XMLInputSource aeInputSource = new XMLInputSource(aeSpecifierFile);
+    XMLInputSource aeInputSource = new XMLInputSource(aeSpecifierUrl);
     ResourceSpecifier aeSpecifier = UIMAFramework.getXMLParser().parseResourceSpecifier(
             aeInputSource);
 
@@ -1273,7 +1318,7 @@
   }
 
   private void addConsumer(String consumerSpecifierFile) throws CpeDescriptorException,
-          InvalidXMLException, IOException {
+          InvalidXMLException, IOException, ResourceConfigurationException {
     String tempName = new File(consumerSpecifierFile).getName(); // overriden later
     CpeCasProcessor casProc = CpeDescriptorFactory.produceCasProcessor(tempName);
     casProc.setDescriptor(consumerSpecifierFile);
@@ -1287,11 +1332,25 @@
   }
 
   private void addConsumer(CpeCasProcessor cpeCasProc) throws CpeDescriptorException,
-          InvalidXMLException, IOException {
-    String consumerSpecifierFile = cpeCasProc.getDescriptor();
-    File f = new File(consumerSpecifierFile);
+          InvalidXMLException, IOException, ResourceConfigurationException {
+    URL consumerSpecifierUrl = cpeCasProc.getCpeComponentDescriptor().findAbsoluteUrl(
+            defaultResourceManager);
+    //CPE GUI only supports file URLs
+    if (!"file".equals(consumerSpecifierUrl.getProtocol())) {
+      displayError("Could not load descriptor from URL " + consumerSpecifierUrl.toString() + 
+              ".  CPE Configurator only supports file: URLs");
+      return;
+    }  
+    File f;
+    try {
+      f = new File(new URI(consumerSpecifierUrl.toString()));
+    } catch (URISyntaxException e) {
+      displayError(e);
+      return;
+    }
+
     long fileModStamp = f.lastModified(); // get mod stamp before parsing, to prevent race condition
-    XMLInputSource consumerInputSource = new XMLInputSource(consumerSpecifierFile);
+    XMLInputSource consumerInputSource = new XMLInputSource(consumerSpecifierUrl);
     ResourceSpecifier casConsumerSpecifier = UIMAFramework.getXMLParser().parseResourceSpecifier(
             consumerInputSource);
     ConsumerPanel consumerPanel = new ConsumerPanel(casConsumerSpecifier, f, fileModStamp);
@@ -1585,7 +1644,7 @@
   }
 
   private void openCpeDescriptor(File aFile) throws InvalidXMLException, IOException,
-          CpeDescriptorException {
+          CpeDescriptorException, ResourceConfigurationException {
     // parse
     currentCpeDesc = UIMAFramework.getXMLParser().parseCpeDescription(new XMLInputSource(aFile));
 
@@ -1608,6 +1667,7 @@
       casIni = collRdr.getCasInitializer();
     }
     if (casIni != null) {
+      casInitializerPanel.clearAll();
       populateCasInitializerPanel(casIni);
     } else {
       casInitializerPanel.reset();
@@ -1617,15 +1677,17 @@
     removeAllAEsAndConsumers();
     CpeCasProcessor[] casProcs = currentCpeDesc.getCpeCasProcessors().getAllCpeCasProcessors();
     for (int i = 0; i < casProcs.length; i++) {
-      String specifierFile = casProcs[i].getDescriptor();
+      URL specifierUrl = casProcs[i].getCpeComponentDescriptor().findAbsoluteUrl(defaultResourceManager);
       ResourceSpecifier specifier = UIMAFramework.getXMLParser().parseResourceSpecifier(
-              new XMLInputSource(specifierFile));
+              new XMLInputSource(specifierUrl));
       if (isCasConsumerSpecifier(specifier)) {
         addConsumer(casProcs[i]);
       } else {
         addAE(casProcs[i]);
       }
     }
+
+    prefs.put(PREFS_CPE_DESCRIPTOR_FILE, aFile.getAbsolutePath());
 
     // nothing should be dirty when we first open
     clearDirty();