00001 package SctData; 00002 00003 import java.util.*; 00004 import Sct.*; 00005 00011 public class ModuleDefectList implements Streamable { 00013 public ModuleDefectList() { 00014 } 00015 00019 public void addDefect(ModuleDefect defect) throws IllegalArgumentException { 00020 if (defect == null || defect.isPrototype()) throw new IllegalArgumentException("May not add prototypical ModuleDefects to a ModuleDefectList"); 00021 defectList.add(defect); 00022 } 00023 00025 public int size() { 00026 return defectList.size(); 00027 } 00028 00029 public ModuleDefect get(int i) { 00030 return (ModuleDefect)defectList.get(i); 00031 } 00032 00034 public ModuleDefectList getDefectsAffectingElement(ModuleElement element) { 00035 ModuleDefectList l = new ModuleDefectList(); 00036 for (int i=0; i<defectList.size(); ++i) { 00037 ModuleDefect d = get(i); 00038 if (d.getModuleElement().overlaps(element)) l.addDefect(d); 00039 } 00040 return l; 00041 } 00042 00043 public int getNDefectsAffectingElement(ModuleElement element) { 00044 int count = 0; 00045 for (int i=0; i<defectList.size(); ++i) { 00046 ModuleDefect d = get(i); 00047 if (d.getModuleElement().overlaps(element)) ++count; 00048 } 00049 return count; 00050 } 00051 00052 public boolean severeDefectAffectingElement(ModuleElement element) { 00053 for (int i=0; i<defectList.size(); ++i) { 00054 ModuleDefect d = get(i); 00055 if (d.isSevere()) return true; 00056 } 00057 return false; 00058 } 00059 00060 public boolean defectAffectingElement(ModuleElement element) { 00061 for (int i=0; i<defectList.size(); ++i) { 00062 ModuleDefect d = get(i); 00063 if (d.getModuleElement().overlaps(element)) return true; 00064 } 00065 return false; 00066 } 00067 00068 public boolean defectAffectingElement(ModuleElement element, ModuleDefect defect) { 00069 for (int i=0; i<defectList.size(); ++i) { 00070 ModuleDefect d = get(i); 00071 if (d.isSameTypeAs(defect) && d.getModuleElement().overlaps(element)) return true; 00072 } 00073 return false; 00074 } 00075 00076 public ModuleDefectList getDefectsEncompassingElement(ModuleElement element) { 00077 ModuleDefectList l = new ModuleDefectList(); 00078 for (int i=0; i<defectList.size(); ++i) { 00079 ModuleDefect d = get(i); 00080 if (d.getModuleElement().superset(element)) l.addDefect(d); 00081 } 00082 return l; 00083 } 00084 00085 public int getNDefectsEncompassingElement(ModuleElement element) { 00086 int count = 0; 00087 for (int i=0; i<defectList.size(); ++i) { 00088 ModuleDefect d = get(i); 00089 if (d.getModuleElement().superset(element)) ++count; 00090 } 00091 return count; 00092 } 00093 00094 public boolean severeDefectEncompassingElement(ModuleElement element) { 00095 for (int i=0; i<defectList.size(); ++i) { 00096 ModuleDefect d = get(i); 00097 if (d.isSevere() && d.getModuleElement().superset(element)) return true; 00098 } 00099 return false; 00100 } 00101 00102 public boolean defectEncompassingElement(ModuleElement element) { 00103 for (int i=0; i<defectList.size(); ++i) { 00104 ModuleDefect d = get(i); 00105 if (d.getModuleElement().superset(element)) return true; 00106 } 00107 return false; 00108 } 00109 00110 public boolean defectEncompassingElement(ModuleElement element, ModuleDefect defect) { 00111 for (int i=0; i<defectList.size(); ++i) { 00112 ModuleDefect d = get(i); 00113 if (d.isSameTypeAs(defect) && d.getModuleElement().superset(element)) return true; 00114 } 00115 return false; 00116 } 00117 00118 public String getClassName() { 00119 return "SctData.ModuleDefectList"; 00120 } 00121 00122 public void add(ModuleDefectList param) { 00123 defectList.addAll(param.defectList); 00124 } 00125 00126 00127 public static ModuleDefectList read(IStream s, ObjectManager o) throws java.io.IOException { 00128 ModuleDefectList ml = new ModuleDefectList(); 00129 int nDefects = s.readInt("NDefects"); 00130 for (int i=0; i<nDefects; ++i) { 00131 ModuleDefect d = (ModuleDefect)o.readObject(s, "Defect", "SctData.ModuleDefect"); 00132 ml.addDefect(d); 00133 } 00134 return ml; 00135 } 00136 00137 public void write(OStream s, ObjectManager o) throws java.io.IOException { 00138 s.writeInt("NDefects", size(), false); 00139 for (int i=0; i<size(); ++i) { 00140 o.writeObject(s, "Defect", get(i), false); 00141 } 00142 } 00143 00144 private ArrayList defectList = new ArrayList(); 00145 }