package fr.inria.soctrace.lib.storage.updater; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; import fr.inria.soctrace.lib.model.utils.SoCTraceException; import fr.inria.soctrace.lib.storage.utils.SQLConstants; import fr.inria.soctrace.lib.storage.utils.DBModelConstants.TraceTableModel; import fr.inria.soctrace.lib.storage.utils.SQLConstants.FramesocTable; public class TraceModelRebuilder extends DBModelRebuilder { public TraceModelRebuilder() { table = FramesocTable.TRACE; getTableQuery = SQLConstants.PREPARED_STATEMENT_TRACE_INSERT; } @Override public void copyValues(PreparedStatement statement, ResultSet rs) throws SoCTraceException { List<String> handledParameters = new ArrayList<String>(); // Use to check to see if there are any parameters that were not treated // at the end of the export for (String columnName : oldModelDiff.keySet()) handledParameters.add(columnName); for (TraceTableModel traceTableModel : TraceTableModel.values()) { // If it is one of the difference if (oldModelDiff.containsKey(traceTableModel.toString())) { int value = oldModelDiff.get(traceTableModel.toString()); // If missing parameter if (value == DBModelRebuilder.MISSING_PARAMETER_VALUE) { // Put default value addToStatement(statement, traceTableModel.getDefaultValue(), traceTableModel.getPosition(), traceTableModel.getType()); } else { // Put the value at the correct place addToStatement(statement, rs, traceTableModel.getPosition(), oldModelDiff.get(traceTableModel.toString()), traceTableModel.getType()); } // Remove parameter from table handledParameters.remove(traceTableModel.toString()); } else { // Just copy it addToStatement(statement, rs, traceTableModel.getPosition(), traceTableModel.getPosition(), traceTableModel.getType()); } } // TODO Add as custom parameters //FramesocManager.getInstance().saveParam(traces, .getName(), // dlg.getType(), dlg.getValue()); } @Override public String getValueAt(int pos) { return TraceTableModel.getValueAt(pos).getDbColumnName(); } @Override public int getColumnNumber() { return TraceTableModel.numberOfColumns(); } }