/*
* Created on Feb 13, 2006
*
* TODO Nothing yet.
*/
package org.mbs3.juniuploader.objects.remoteobjects;
import java.util.prefs.Preferences;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.util.Vector;
import org.mbs3.juniuploader.util.Prefs;
/**
* This class represents a group of form pairs to be submitted as part
* of an upload rule.
*
* @see FormPair
* @see UploadRule
*/
public class FormPairGroup implements Comparable
{
private static Log log = LogFactory.getLog(FormPairGroup.class);
private Preferences prefs = Prefs.getPrefs();
Vector pairs;
String name;
/**
*
*/
/*public FormPairGroup (String name, Vector pairs)
{
super();
this.pairs = pairs;
this.name = name;
}*/
public FormPairGroup (String name)
{
super();
log.trace("Form pairs grouping constructor for " + name);
this.pairs = new Vector();
this.name = name;
}
public void retrieveGroupPreference()
{
Preferences fpgs = Prefs.getPrefs().node(this.prefs.absolutePath() + "/formpairgroups");
Preferences child = fpgs.node(fpgs.absolutePath() + "/" + this.name);
try {
String [] keys = child.keys();
for(int i = 0; i < keys.length; i++)
{
String key = keys[i];
String value = child.get(key, "error");
if(!value.equals("error"))
{
FormPair gp = new FormPair(key, value);
this.pairs.addElement(gp);
}
}
} catch (Exception ex)
{
log.warn("Could not restore the form pair group " + this.name);
}
}
public void storeGroupPreference()
{
try {
Preferences fpgs = Prefs.getPrefs().node(this.prefs.absolutePath() + "/formpairgroups");
Preferences child = fpgs.node(fpgs.absolutePath() + "/" + this.name);
child.removeNode();
//fpgs = Prefs.getPrefs().node(this.prefs.absolutePath() + "/formpairgroups");
child = fpgs.node(fpgs.absolutePath() + "/" + this.name);
child.clear();
log.debug("Clearing options in path " + child.absolutePath());
for(int i = 0; i < this.pairs.size(); i++)
{
FormPair fp = (FormPair)this.pairs.get(i);
child.put(fp.getName(), fp.getValue());
log.trace("Stored pref group " + fp.getName() + " to " + child.absolutePath());
}
} catch (Exception ex)
{
log.warn("Could not store the form pair group " + this.name);
} }
/**
* @return Returns the value of name.
*/
public String getName ()
{
return this.name;
}
/**
* Sets name to name.
* @param name Name of the group of key/value pairs
*/
public void setName (String name)
{
this.name = name;
}
/**
* @return Returns the value of pairs.
*/
public FormPair [] getArrayPairs ()
{
FormPair [] fp = new FormPair[this.pairs.size()];
for(int i = 0; i < this.pairs.size(); i++)
{
fp[i] = (FormPair)this.pairs.get(i);
}
return fp;
}
public Vector getPairs()
{
return this.pairs;
}
public String toString()
{
return this.name;
}
public int compareTo(Object obj)
{
FormPairGroup fpg = (FormPairGroup)obj;
String oName = fpg.getName();
if(!oName.equals(this.name))
return -1;
Vector oPairs = fpg.getPairs();
if(oPairs.size() != this.pairs.size())
return -1;
for(int i = 0; i < oPairs.size(); i++)
if(oPairs.get(i) != this.pairs.get(i))
return -1;
return 0;
}
public static Vector retrievePreferences()
{
Vector formGroups = new Vector();
Preferences prefs = Prefs.getPrefs();
// restore formpair groups
Preferences fpgs = prefs.node(prefs.absolutePath() + "/formpairgroups");
try {
String [] groups = fpgs.childrenNames();
for(int i = 0; i < groups.length; i++)
{
//Preferences child = fpgs.node(fpgs.absolutePath() + "/" + groups[i]);
String name = groups[i];
FormPairGroup fpg = new FormPairGroup(name);
fpg.retrieveGroupPreference();
formGroups.addElement(fpg);
}
} catch (Exception ex) {
log.warn("Error trying to retrieve preferences from settings repository");
}
return formGroups;
}
public static void storePreferences(Vector formGroups)
{
log.debug("Begining form group prefs save operation");
try {
Preferences fpgs = Prefs.getPrefs().node(Prefs.getPrefs().absolutePath() + "/formpairgroups");
fpgs.removeNode();
for(int i = 0; i < formGroups.size(); i++)
{
FormPairGroup fpg = (FormPairGroup)formGroups.get(i);
if(fpg != null)
{
String fpgname = fpg.getName();
if(fpgname != null && fpgname.equals("none"))
continue;
log.trace("Storing prefs for " + fpgname);
fpg.storeGroupPreference();
}
}
} catch (Exception ex) {
log.warn("Error trying to store formpairgroups preferences to settings repository");
}
}
}