package pickMaint; import java.util.ArrayList; import javax.swing.table.AbstractTableModel; /** * This class implements all abstract methods in AbstractTableModel as needed to display LoomDSRecords properly. * * @author Wesley Ray */ public class LoomDSTableModel extends AbstractTableModel { private static final long serialVersionUID = 1L; private static final String [] COL_HEADERS = {"Loom", "Weaver", "Style", "Hours", "Picks", "Picks Possible", "Down Time", "Sample Cut"}; private LoomDSRecord[] data; private Integer[] sampleHighlight; private Integer[] zeroHighlight; /** * Updates the data to be displayed by the table model. * Also builds an array of specific rows to highlight in a different color due to them being sample cut-ins * @param data The LoomDSRecord[] to display */ public void loadTable(LoomDSRecord[] data){ this.data = data; ArrayList q = new ArrayList(); for(LoomDSRecord r : data){ if(r.getLdStyle().trim().equalsIgnoreCase("SAM")) q.add(r.getLoomNumber()); } sampleHighlight = q.toArray(new Integer[q.size()]); q = new ArrayList(); for(LoomDSRecord r : data){ float derp = (float) r.getPicks() / (float) r.getMaxPicks(); if(derp <= 0.75 && r.getWeaverNumber() != 700 && r.getWeaverNumber() != 701 && r.getWeaverNumber() != 702) q.add(r.getLoomNumber()); } zeroHighlight = q.toArray(new Integer[q.size()]); this.fireTableDataChanged(); } /** * Returns true if the given row number is to be highlighted for being a sample cut * @param row - the row number to check * @return true/false if row contains sample cut */ public boolean highlightSample(int row){ int target = data[row].getLoomNumber(); for(int i : sampleHighlight){ if(i == target) return true; } return false; } /** * Returns true if the given row number is to be highlighted for having zero picks * @param row - the row number to check * @return true/false */ public boolean highlightZero(int row){ int target = data[row].getLoomNumber(); for(int i : zeroHighlight){ if(i == target) return true; } return false; } /** * Returns bonus status for a given row * @param row - the row to check * @return Bonus or not? */ public boolean bonus(int row){ return data[row].isBonus(); } @Override public int getRowCount() { return data.length; } @Override public int getColumnCount() { return COL_HEADERS.length; } @Override public String getColumnName(int column) { return COL_HEADERS[column]; } @Override public Object getValueAt(int rowIndex, int columnIndex) { switch(columnIndex){ case 0: return data[rowIndex].getLoomNumber(); case 1: return data[rowIndex].getWeaverNameDisplay(); case 2: return data[rowIndex].getLdStyle(); case 3: return data[rowIndex].getHours(); case 4: return data[rowIndex].getPicks(); case 5: return data[rowIndex].getMaxPicks() + " (+" + (data[rowIndex].getMaxPicks() - data[rowIndex].getPicks()) + ")"; case 6: return data[rowIndex].getformattedDowntimeReason(); case 7: return data[rowIndex].getFormattedCutNumber(); } return null; //required to compile } }