Mercurial > hg > de.mpg.mpiwg.itgroup.digilib.plugin
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); + } + +}