package ecologylab.bigsemantics.metametadata.fieldops; import java.util.HashMap; import ecologylab.net.ParsedURL; import ecologylab.serialization.annotations.simpl_scalar; /** * * @author quyin */ public class SetParam implements FieldOp { @simpl_scalar private String name; @simpl_scalar private String value; @simpl_scalar private boolean onlyWhenNotSet; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } @Override public Object operateOn(Object rawValue) { if (rawValue != null && name != null && value != null) { ParsedURL purl = (rawValue instanceof ParsedURL) ? ((ParsedURL) rawValue) : ParsedURL.getAbsolute(rawValue.toString()); HashMap<String, String> params = purl.extractParams(true); if (!onlyWhenNotSet || !params.containsKey(name)) { params.put(name, value); } return purl.updateParams(params); } return rawValue; } }