Hi all,
Attached patch contains most of the funcionality discussed
here: http://nagoya.apache.org/eyebrowse/ReadMsg?listId=15msgNo=20440
Nicola, please, review it and let me know your opinion.
Comments welcome...
Regards
Tomek Pik
[EMAIL PROTECTED]
Index: org/apache/commons/morphos/ObjectFlavor.java
===
RCS file:
/home/cvspublic/jakarta-commons-sandbox/morphos/src/java/org/apache/commons/morphos/ObjectFlavor.java,v
retrieving revision 1.1
diff -u -r1.1 ObjectFlavor.java
--- org/apache/commons/morphos/ObjectFlavor.java 25 Jul 2002 13:18:10 - 1.1
+++ org/apache/commons/morphos/ObjectFlavor.java 30 Dec 2002 23:45:35 -
@@ -84,6 +84,7 @@
*
* @param dataType The mime type
* @param dataForm The format in which the data is (object, file, stream, etc)
+ * @throws IllegalArgumentException if one (or both) of agumentets is
+codenull/code
*/
public ObjectFlavor (String dataType, String dataForm) {
setDataType(dataType);
@@ -98,10 +99,29 @@
setDataForm();
}
+ /**
+ * Sets data type of this flavor.
+ *
+ * Data type cannot be codenull/code.
+ *
+ * @param dataType The mime type
+ * @throws IllegalArgumentException if codedataType/code
+ * is codenull/code.
+ */
void setDataType(String dataType){
this.dataType = dataType;
}
+ /**
+ * Sets data form of this flavor.
+ *
+ * Data form cannot be codenull/code.
+ *
+ * @param dataForm The format in which the data is
+ * (object, file, stream, etc)
+ * @throws IllegalArgumentException if codedataForm/code
+ * is codenull/code.
+ */
void setDataForm(String dataForm){
this.dataForm = dataForm;
}
@@ -113,7 +133,26 @@
String getdataForm(){
return dataForm;
}
-
+
+/**
+ * @see Object#equals(java.lang.Object)
+ */
+public boolean equals(Object o) {
+try {
+ObjectFlavor other = (ObjectFlavor) o;
+return (other.getdataType().equals(dataType)
+other.getdataForm().equals(dataForm));
+} catch (ClassCastException cce) {
+return false;
+}
+}
+
+/**
+ * @see Object#hashCode()
+ */
+public int hashCode() {
+return (dataType + - + dataForm).hashCode();
+}
}
Index: org/apache/commons/morphos/factories/BasicMorpherFactory.java
===
RCS file:
/home/cvspublic/jakarta-commons-sandbox/morphos/src/java/org/apache/commons/morphos/factories/BasicMorpherFactory.java,v
retrieving revision 1.2
diff -u -r1.2 BasicMorpherFactory.java
--- org/apache/commons/morphos/factories/BasicMorpherFactory.java 29 Aug 2002 07:07:59
- 1.2
+++ org/apache/commons/morphos/factories/BasicMorpherFactory.java 30 Dec 2002 23:45:43
+-
@@ -64,7 +64,12 @@
import org.apache.commons.morphos.Morpher;
import org.apache.commons.morphos.MorpherFactory;
import org.apache.commons.morphos.ObjectFlavor;
+import org.apache.commons.morphos.helpers.FlavorPair;
+
import java.util.HashMap;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Map;
/**
*
@@ -73,47 +78,107 @@
* @version $Revision: 1.2 $ $Date: 2002/08/29 07:07:59 $
*/
public class BasicMorpherFactory implements MorpherFactory {
- private HashMap knownMorphers;
-
- public BasicMorpherFactory(){
- super();
- knownMorphers=new HashMap();
- // FIXME Make configurable
-
knownMorphers.put(gnumeric2xls,org.apache.commons.morphos.morphers.poi.HSSFMorpher);
-
knownMorphers.put(gnumeric2poi,org.apache.commons.morphos.morphers.poi.HSSFMorpher);
- knownMorphers.put(xslt,org.apache.commons.morphos.morphers.xml.XSLTMorpher);
- knownMorphers.put(poi2xls,org.apache.commons.morphos.morphers.poi.POIFSMorpher);
-
knownMorphers.put(is2sax,org.apache.commons.morphos.morphers.dataform.InputSource2SAXMorpher);
-
knownMorphers.put(stream2sax,org.apache.commons.morphos.morphers.dataform.Stream2SAXMorpher);
- }
-
-public Morpher getMorpher(ObjectFlavor inputFlavor, ObjectFlavor outputFlavor){
- throw new UnsupportedOperationException(implement me :-));
-}
-
-public Morpher getMorpher(String name){
- Morpher morpher=null;
- String clazzName = (String)knownMorphers.get(name);
-
- if(clazzName!=null){
- try{
-morpher = (Morpher)Class.forName(clazzName).newInstance();
- } catch(Exception e){
-e.printStackTrace();
- }
- }
- return morpher;
-}
-}
-
-
-
-
-
+private Map knownMorphers;
+private Map inputOutputMapping;
+public BasicMorpherFactory() {
+super();
+knownMorphers = new HashMap();
+inputOutputMapping = new HashMap();
+registerKnownMorphers();
+}
+/**
+ * @see MorpherFactory#getMorpher(ObjectFlavor,