package art.servers.gui.components; import art.library.gui.flat.FlatButton; import art.library.gui.flat.FlatDatePicker; import art.library.gui.flat.FlatLabel; import art.library.gui.flat.FlatPanel; import art.library.gui.flat.FlatTextField; import art.library.gui.flat.FlatWindow; import art.library.model.transactions.traces.Trace; import art.servers.Shared; import static art.servers.gui.components.PanelTraces.color; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.Insets; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.List; import javax.swing.SwingConstants; public class PanelTracesHistorical extends PanelTraces { private FlatDatePicker datePicker1 = null; private FlatDatePicker datePicker2 = null; private FlatButton button1 = null; private FlatTextField textfield1 = null; private int totalTraces = 100; public PanelTracesHistorical(FlatWindow window) { super(window, 0); this.initialisePanelTracesHistorical(); } protected void initialisePanelTracesHistorical() { Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); datePicker1 = new FlatDatePicker(FlatDatePicker.TYPE_PICKER_DAY, SwingConstants.LEFT, true, false); datePicker1.setLocale(Shared.configuration.getLocale()); datePicker1.setTimestamp(calendar.getTimeInMillis()); calendar.add(Calendar.DATE, 1); datePicker2 = new FlatDatePicker(FlatDatePicker.TYPE_PICKER_DAY, SwingConstants.LEFT, true, false); datePicker2.setLocale(Shared.configuration.getLocale()); datePicker2.setTimestamp(calendar.getTimeInMillis()); FlatPanel panel1 = new FlatPanel(); { FlatPanel panel1_1 = new FlatPanel(); { FlatPanel panel1_1_1 = new FlatPanel(); { panel1_1_1.setRaisedBorder(0, 0, 0, 1); panel1_1_1.setLayout(new BorderLayout()); panel1_1_1.add(datePicker1, BorderLayout.CENTER); } FlatPanel panel1_1_2 = new FlatPanel(); { panel1_1_2.setRaisedBorder(0, 1, 0, 1); panel1_1_2.setLayout(new BorderLayout()); panel1_1_2.add(datePicker2, BorderLayout.CENTER); } FlatPanel panel1_1_3 = new FlatPanel(); { FlatPanel panel1_1_3_1 = new FlatPanel(); { FlatLabel label1 = new FlatLabel("Limit"); textfield1 = new FlatTextField(); textfield1.setText("" + totalTraces); textfield1.setNumeric(true, 1, 1000); panel1_1_3_1.setLayout(new GridLayout(1, 2)); panel1_1_3_1.add(label1); panel1_1_3_1.add(textfield1); } panel1_1_3.setLayout(new BorderLayout()); panel1_1_3.setPanelMargins(new Insets(4, 4, 4, 4)); panel1_1_3.setRaisedBorder(0, 1, 0, 0); panel1_1_3.add(panel1_1_3_1, BorderLayout.CENTER); } panel1_1.setLayout(new GridLayout(1, 3)); panel1_1.add(panel1_1_1); panel1_1.add(panel1_1_2); panel1_1.add(panel1_1_3); panel1_1.setRaisedBorder(0,0,1,0); } FlatPanel panel1_2 = new FlatPanel(); { button1 = new FlatButton(Shared.getMessage("Execute")); button1.getLook().horizontalAlignment = SwingConstants.CENTER; panel1_2.setPreferredSize(new Dimension(44,44)); panel1_2.setLayout(new BorderLayout()); panel1_2.add(button1, BorderLayout.CENTER); panel1_2.setRaisedBorder(1,0,1,0); panel1_2.setPanelMargins(new Insets(4, 4, 4, 4)); } panel1.setPreferredSize(new Dimension(0,80)); panel1.setLayout(new BorderLayout()); panel1.add(panel1_1, BorderLayout.CENTER); panel1.add(panel1_2, BorderLayout.SOUTH); button1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { listTraces(); } }); } this.add(panel1, BorderLayout.NORTH); } public void addTrace(Object object) { mutex.lockWrite(); { traces.add(object); } mutex.releaseWrite(); } public void reload() { } public void view(boolean value) { scrollPane.setVisible(value); } private void listTraces() { clear(); SimpleDateFormat formato1 = new SimpleDateFormat(Shared.getMessage("dd/MM/yyyy HH:mm:ss.SSS")); try { totalTraces = Integer.parseInt(textfield1.getText()); } catch (Exception e) { totalTraces = 100; textfield1.setText("" + totalTraces ); } try { long from = datePicker1.getCalendar().getTimeInMillis(); long to = datePicker2.getCalendar().getTimeInMillis(); List ltrace = Shared.model.getTraces(Shared.getLanguage(), from, to, Shared.getApplicationName(), totalTraces); for (Trace trace : ltrace) { String result = ""; result = result + color(SCREEN_RESET, SCREEN_WHITE, SCREEN_BLACK); result = result + formato1.format(trace.timestamp) + "\n"; switch (trace.type) { case Trace.TRACE_NONE: result = result = result + color(SCREEN_RESET, SCREEN_WHITE, SCREEN_BLACK); break; case Trace.TRACE_INFORMATION: result = result = result + color(SCREEN_RESET, SCREEN_CYAN, SCREEN_BLACK); break; case Trace.TRACE_WARNING: result = result + color(SCREEN_RESET, SCREEN_YELLOW, SCREEN_BLACK); break; case Trace.TRACE_ERROR: result = result + color(SCREEN_RESET, SCREEN_RED, SCREEN_BLACK); break; } result = result + "{\n"; if (trace.sourceComputer != null) result = result + " " + Shared.getMessage("Source") + " : " + trace.sourceComputer + "\n"; if (trace.username != null) result = result + " " + Shared.getMessage("Username") + " : " + trace.username + "\n"; if (trace.profile != null) result = result + " " + Shared.getMessage("Profile") + " : " + trace.profile + "\n"; if (trace.service != null) result = result + " " + Shared.getMessage("Service") + " : " + trace.service + "\n"; if (trace.action != null) result = result + " " + Shared.getMessage("Action") + " : " + trace.action + "\n"; if (trace.resource != null) result = result + " " + Shared.getMessage("Resource") + " : " + trace.resource + "\n"; if (trace.result != null) result = result + " " + Shared.getMessage("Result") + " : " + trace.result + "\n"; if (trace.stack != null) result = result + " " + Shared.getMessage("Stack") + " : " + trace.stack + "\n"; result = result + "}\n"; newLine(result); addTrace(trace); } } catch (Exception e) { } scrollPane.getViewport().setViewPosition(new Point(0,0)); buttonView.setSelected(true); scrollPane.setVisible(true); } }