package uonlineeditor; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * * @author houjing */ public class Areas { Areas() {} Areas (List<String[]> areas) { for (Iterator<String[]> it = areas.iterator(); it.hasNext();) { Area ar = new Area(it.next()); lastId = Math.max (lastId, (int) ar.getParameter(Area.ID)); this.areas.add(ar); } } static ArrayList<Location> getLocations() { ArrayList<Location> ll = new ArrayList<>(); for (Area a: areas) { ll.addAll(a.locs.locs); } return ll; } void attachLocations(List<Location> ll) { for(Location l: ll) { for(Area a: areas) { if (a.getParameter(Area.ID) == l.area) { a.addLocation(l); break; } } } } static int getLocationId(Object loc) { ArrayList<Location> ll = getLocations(); for (Location l: ll) { if (l.getParameter(Location.TITLE) == (String) loc) { return l.id; } } return -1; } static String getLocationById(int id) { ArrayList<Location> ll = getLocations(); for (Location l: ll) { if (l.getParameter(Location.ID) == id) { return l.title; } } return null; } int getRowNumberOf(Object obj, int col) { for (int i = 0; i < areas.size(); i++) { if (areas.get(i).getParameter(col) == obj) { return i; } } return -1; } List<String[]> asData() { List<String[]> areas = new ArrayList<>(); for (Iterator<Area> it = this.areas.iterator(); it.hasNext();) { Area i = it.next(); areas.add(i.asData()); } return areas; } int addArea(int index) { if (index == -1 || index > areas.size() - 1) { areas.add(new Area(++lastId)); return 0; } else if (areas.size() == index + 1) { areas.add(new Area(++lastId)); return areas.size()-1; } else { areas.add(index + 1, new Area(++lastId)); return index + 1; } } void removeArea(int index) { areas.remove(index); } int removeAreas(int[] index) { if (index.length == 0 || areas.size() == -1) return -1; for (int i = index.length - 1; i >= 0 ; i--) { if (index[i] >= areas.size()) continue; removeArea(index[i]); } return index[index.length-1] == areas.size() + 1 - index.length ? areas.size() - 1 : index[0]; } static int size() { return areas.size(); } static Area get(int ind) { return areas.get(ind); } public static ArrayList<Area> areas = new ArrayList<>(); private int lastId = 0; public static int lastLocId = 0; }