123 lines
3.1 KiB
Java
123 lines
3.1 KiB
Java
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<Integer> q = new ArrayList<Integer>();
|
|
for(LoomDSRecord r : data){
|
|
if(r.getLdStyle().trim().equalsIgnoreCase("SAM"))
|
|
q.add(r.getLoomNumber());
|
|
}
|
|
sampleHighlight = q.toArray(new Integer[q.size()]);
|
|
|
|
q = new ArrayList<Integer>();
|
|
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
|
|
}
|
|
|
|
}
|