1 25 package org.archive.crawler.settings; 26 27 import java.util.ArrayList ; 28 import java.util.Collections ; 29 import java.util.List ; 30 31 import javax.management.Attribute ; 32 33 38 public abstract class Type extends Attribute { 39 40 private boolean isTransient = false; 41 42 private boolean overrideable = true; 43 44 private boolean isExpertSetting = false; 45 46 private List <Constraint> constraints = new ArrayList <Constraint>(); 47 50 private Class legalValueType; 51 52 57 public Type(String name, Object value) { 58 super(name.intern(), value); 59 legalValueType = value != null ? value.getClass() : this.getClass(); 60 constraints.add(new LegalValueTypeConstraint()); 61 } 62 63 69 abstract String getDescription(); 70 71 75 abstract Object getDefaultValue(); 76 77 82 abstract Object [] getLegalValues(); 83 84 89 public boolean isOverrideable() { 90 return overrideable; 91 } 92 93 97 public void setOverrideable(boolean b) { 98 overrideable = b; 99 } 100 101 105 public boolean isTransient() { 106 return isTransient; 107 } 108 109 115 public void setTransient(boolean b) { 116 isTransient = b; 117 } 118 119 123 public boolean isExpertSetting() { 124 return isExpertSetting; 125 } 126 127 132 public void setExpertSetting(boolean isExpertSetting) { 133 this.isExpertSetting = isExpertSetting; 134 } 135 136 140 public List getConstraints() { 141 return constraints; 142 } 143 144 150 public void addConstraint(Constraint constraint) { 151 constraints.add(constraint); 152 Collections.sort(constraints); 153 } 154 155 160 public Class getLegalValueType() { 161 return legalValueType; 162 } 163 164 169 public void setLegalValueType(Class legalValueType) { 170 this.legalValueType = legalValueType; 171 } 172 173 177 public boolean equals(Object o) { 178 return this == o 179 || (o instanceof Type 180 && this.getName().equals(((Type) o).getName()) && this 181 .getValue().equals(((Type) o).getValue())); 182 } 183 } 184 | Popular Tags |