diff src/de/mpg/mpiwg/itgroup/digilib/digiImage/DigiImageParameter.java @ 20:2f47c136b8a6

added property view
author dwinter
date Tue, 04 Jan 2011 16:35:41 +0100
parents e63a64652f4d
children 643fa1daa70c
line wrap: on
line diff
--- a/src/de/mpg/mpiwg/itgroup/digilib/digiImage/DigiImageParameter.java	Tue Jan 04 10:31:53 2011 +0100
+++ b/src/de/mpg/mpiwg/itgroup/digilib/digiImage/DigiImageParameter.java	Tue Jan 04 16:35:41 2011 +0100
@@ -1,5 +1,16 @@
 package de.mpg.mpiwg.itgroup.digilib.digiImage;
 
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.sun.xml.xsom.impl.parser.DelayedRef.Type;
+
+import de.mpg.mpiwg.itgroup.digilib.plugin.editors.DigilibLinkEditorObservable;
+
 /**
  * Parameter which describe the state of an Digilib-Image, 
  * settings and parameter names  are described in @see {@link http://developer.berlios.de/docman/?group_id=251}
@@ -8,37 +19,87 @@
  */
 public class DigiImageParameter {
 
-	private String fn;
+	public String fn;
 	
-	private int pn=1;
+	public int pn=1;
 	
-	private int dw=-1;
-	private int dh=-1;
+	public int dw=-1;
+	public int dh=-1;
 
-	private float wx=0;
-	private float wy=0;
+	public float wx=0;
+	public float wy=0;
 	
-	private float ww=1;
-	private float wh=1;
-	private float ws=1;
+	public float ww=1;
+	public float wh=1;
+	public float ws=1;
 	
-	private String mo="fit";
+	public String mo="fit";
 	
-	private float cont=0;
-	private float brgt=0;
+	public float cont=0;
+	public float brgt=0;
 	
-	private float rot=0;
+	public float rot=0;
 	
-	private String rgbm="0/0/0";
-	private String rgba="0/0/0";
+	public String rgbm="0/0/0";
+	public String rgba="0/0/0";
 	
-	private int ddpi=-1;
-	private int ddpix=-1;
-	private int ddpiy=-1;
+	public int ddpi=-1;
+	public int ddpix=-1;
+	public int ddpiy=-1;
 	
 	public DigiImageParameter(String fn){
 		this.fn = fn;
 	}
+	
+	public DigiImageParameter(Map<String,String> params){
+		
+		for(String key: params.keySet()){
+			Field f;
+			try {
+				f = this.getClass().getField(key);
+			} catch (SecurityException e) {
+				continue;
+			} catch (NoSuchFieldException e) {
+				continue;
+			}
+			if (f!=null){
+				try {
+					Class<?> T = f.getType();
+					String name= T.getName();
+					String valueString = params.get(key); 
+					Object value = valueString;
+					if (name.equals("float")){
+						value =  Float.valueOf(valueString);
+					} else if (name.equals("double")){
+						value =  Double.valueOf(valueString);
+					} else if (name.equals("int")){
+						value =  Integer.valueOf(valueString);
+					} else if (name.equals("Float")){
+						value =  Float.valueOf(valueString);
+					} else if (name.equals("Double")){
+						value =  Double.valueOf(valueString);
+					} else if (name.equals("Integer")){
+						value =  Integer.valueOf(valueString);
+					}
+					
+					
+					f.set(this, value);
+					
+				} catch (IllegalArgumentException e) {
+					// TODO Auto-generated catch block
+					e.printStackTrace();
+					continue;
+				} catch (IllegalAccessException e) {
+					// TODO Auto-generated catch block
+					e.printStackTrace();
+					continue;
+				
+				}
+			}
+		}
+	}
+	
+	
 	public String getFn() {
 		return fn;
 	}
@@ -150,6 +211,71 @@
 
 	
 	
+	public  Map<String, String> createMapFromParameters(List<String> omitIfNegative) {
+			
+			
+			Map<String,String> qa= new HashMap<String,String>();
+			
+			setPm(qa,"fn",getFn(),omitIfNegative);
+			setPm(qa,"pn",getPn(),omitIfNegative);
+			
+			setPm(qa,"dw",getDw(),omitIfNegative);
+			setPm(qa,"dh",getDh(),omitIfNegative);
+			
+			setPm(qa,"wx",getWx(),omitIfNegative);
+			setPm(qa,"wy",getWy(),omitIfNegative);
+			setPm(qa,"ws",getWs(),omitIfNegative);
+			setPm(qa,"ww",getWw(),omitIfNegative);
+			setPm(qa,"wh",getWh(),omitIfNegative);
+			
+			
+			setPm(qa,"mo",getMo(),omitIfNegative);
+			
+			setPm(qa,"cont",getCont(),omitIfNegative);
+			setPm(qa,"brgt",getBrgt(),omitIfNegative);
+			
+			setPm(qa,"rot",getRot(),omitIfNegative);
+			
+			setPm(qa,"rgba",getRgba(),omitIfNegative);
+			setPm(qa,"rgbm",getRgbm(),omitIfNegative);
+			
+			setPm(qa,"ddpi",getDdpi(),omitIfNegative);
+			setPm(qa,"ddpix",getDdpix(),omitIfNegative);
+			setPm(qa,"ddpiy",getDdpiy(),omitIfNegative);
+			return qa;
+		}
+		
+	
+
+
+/**
+ * Puts the parameter as key-value  into the map repecting the setting in @see {@link #omitIfNegativeArray}.
+ * @param qa
+ * @param key
+ * @param value
+ * @param omitIfNegative 
+ */
+private  void setPm(Map<String, String> qa, String key, Object value,  List<String> omitIfNegative){
+	String v;
+	
+	if (omitIfNegative==null){
+		qa.put(key, String.valueOf(value));
+		return;
+	}
+	if (String.class.isInstance(value)){
+		v=(String)value;
+		qa.put(key, v);
+	} else if (Integer.class.isInstance(value)){
+		if (!((Integer)value==-1 & omitIfNegative.indexOf(key)>-1)) { // nicht vernachlaessigen
+			v=String.valueOf(value);
+			qa.put(key, v);
+		}
+	} else {
+		v=String.valueOf(value);
+		qa.put(key, v);
+	}
+	
+}