class Series { String ID; String Title; int ContStartDate; int ContEndDate; int AccumStartDate; int AccumEndDate; int Items; float Metres; int drawRow; int Span; String[] Controlling_Series; String[] Related_Series; String[] Succession_Series; String[] Recording_Agencies; String[] Controlling_Agencies; Series(String _ID, String _Title, int[] _Dates, int _Items, float _Metres, String[][] _Links, ArrayList ParentList){ ID = _ID; Title = _Title; ContStartDate = min(_Dates[0],_Dates[1]); ContEndDate = max(_Dates[0],_Dates[1]); AccumStartDate = min(_Dates[2],_Dates[3]); if (AccumStartDate < 1760) println("bad accum date: " + AccumStartDate); AccumEndDate = max(_Dates[2],_Dates[3]); Items = _Items; Metres = _Metres; Controlling_Series = _Links[0]; Related_Series = _Links[1]; Succession_Series = _Links[2]; Recording_Agencies = _Links[3]; Controlling_Agencies = _Links[4]; if (sort_by == 0) { Span = ContEndDate-ContStartDate; } else { Span = AccumEndDate-AccumStartDate; } ParentList.add(this); } } class ContStartDateComparator implements Comparator{ int compare(Object O1, Object O2){ Series S1 = (Series) O1; Series S2 = (Series) O2; int comp = S1.ContStartDate - S2.ContStartDate; return comp; } } class AccumStartDateComparator implements Comparator{ int compare(Object O1, Object O2){ Series S1 = (Series) O1; Series S2 = (Series) O2; int comp = (S1.AccumStartDate - S2.AccumStartDate); return comp; } }