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 }