/* * Created on 02.04.2005 */ package biz.ganttproject.core.option; import java.util.HashMap; import java.util.Map; /** * @author bard */ public class GPOptionGroup { private Map<String, String> myCanonicalKey_customKey; private final String myID; private final GPOption[] myOptions; private boolean isTitled = true; public GPOptionGroup(String id, GPOption... options) { myID = id; myOptions = options; } public String getID() { return myID; } public GPOption[] getOptions() { return myOptions; } public GPOption getOption(String optionID) { assert optionID != null; for (int i = 0; i < myOptions.length; i++) { if (myOptions[i].getID().equals(optionID)) { return myOptions[i]; } } return null; } public void lock() { } public void commit() { for (int i = 0; i < myOptions.length; i++) { myOptions[i].commit(); } } public void rollback() { } public boolean isTitled() { return isTitled; } public void setTitled(boolean isTitled) { this.isTitled = isTitled; } public void copyFrom(GPOptionGroup originalGroup) { if (!getID().equals(originalGroup.getID())) { throw new IllegalArgumentException("You can copy only identically structured option groups"); } lock(); try { Map<String, GPOption> id2option = new HashMap<String, GPOption>(); for (int i = 0; i < myOptions.length; i++) { id2option.put(myOptions[i].getID(), myOptions[i]); } GPOption[] originals = originalGroup.getOptions(); for (int i = 0; i < originals.length; i++) { GPOption copy = id2option.get(originals[i].getID()); if (copy == null) { throw new IllegalStateException("Can't find option (id=" + originals[i].getID() + ") in my options"); } copy.loadPersistentValue(originals[i].getPersistentValue()); } } finally { commit(); } } public String getI18Nkey(String canonicalKey) { return (String) (myCanonicalKey_customKey == null ? null : myCanonicalKey_customKey.get(canonicalKey)); } public void setI18Nkey(String canonicalKey, String customKey) { if (myCanonicalKey_customKey == null) { myCanonicalKey_customKey = new HashMap<String, String>(); } myCanonicalKey_customKey.put(canonicalKey, customKey); } }