protected static boolean checkIdle(final Point p) throws NimbitsException { final Calendar c = Calendar.getInstance(); c.add(Calendar.SECOND, p.getIdleSeconds() * -1); boolean retVal = false; final List<Entity> result = EntityServiceFactory.getInstance() .getEntityByKey( UserServiceFactory.getServerInstance().getAdmin(), p.getOwner(), EntityType.user); if (!result.isEmpty()) { final User u = (User) result.get(0); final List<Value> v = ValueServiceFactory.getInstance().getCurrentValue(p); if (p.getIdleSeconds() > 0 && !v.isEmpty() && v.get(0).getTimestamp().getTime() <= c.getTimeInMillis() && !p.getIdleAlarmSent()) { p.setIdleAlarmSent(true); EntityServiceFactory.getInstance().addUpdateEntity(u, p); // PointServiceFactory.getInstance().updatePoint(u, p); final Value va = ValueFactory.createValueModel(v.get(0), AlertType.IdleAlert); SubscriptionServiceFactory.getInstance().processSubscriptions(u, p, va); retVal = true; } } return retVal; }
/** * Updates the data set for both charts with the contents of the supplied Hashtable. The Hashtable * is expected to contain the following items: * * <ul> * <li>down - The number of links currently in a down state * <li>up - The number of links currently in an up state * <li>unknown - The number of links currently in an unknown state * </ul> * * @param linkStats The hashtable containing the entries indicating current link statistics. */ public void updateData(Hashtable<String, Integer> linkStats) { dpdCurrentData.insertValue(0, "Link Down", linkStats.get("down")); dpdCurrentData.insertValue(1, "Link Up", linkStats.get("up")); dpdCurrentData.insertValue(2, "Link State Unknown", linkStats.get("unknown")); dcdPreviousData.addValue( linkStats.get("down"), "Link Down", Calendar.getInstance().getTime().toString()); dcdPreviousData.addValue( linkStats.get("up"), "Link Up", Calendar.getInstance().getTime().toString()); dcdPreviousData.addValue( linkStats.get("unknown"), "Link State Unknown", Calendar.getInstance().getTime().toString()); }
/** Gets given data into this object. */ public void merge(final ParseResult other) { if (this.calendars.size() == 0) { this.calendars.add((Calendar) other.getLocalTimestamp(0).clone()); } if (!other.getUTCTimestampCopy().equals(this.getUTCTimestampCopy())) { throw new IllegalArgumentException( "Cannot merge result data in " // System.out.println("Cannot merge result data in " + "different times (" + other.getUTCTimestampCopy() + " is not as expected " + this.getUTCTimestampCopy() + ")\n" + "Original result is related to " + this.symbols + " and " + "unexpected result is related to " + other.symbols); } for (Map.Entry<String, Map<Field, Double>> symbolVals : other.values.entrySet()) { boolean symbolFound = false; for (int i = 0; i < this.symbols.size(); i++) { if (this.symbols.get(i).equals(symbolVals.getKey())) { symbolFound = true; break; } } if (!symbolFound) { final String s = symbolVals.getKey(); this.addSymbol(s); for (int i = 0; i < this.symbols.size(); i++) { if (this.symbols.get(i).equals(s)) { final Calendar c = (Calendar) other.getLocalTimestamp(s).clone(); final long millis = c.getTimeInMillis(); c.setTimeZone(other.getLocalTimestamp(s).getTimeZone()); c.setTimeInMillis(millis); if (this.calendars.size() <= i) this.newTimestamp(i); this.calendars.set(i, c); break; } } } for (Map.Entry<Field, Double> fieldValue : symbolVals.getValue().entrySet()) { this.putValue(symbolVals.getKey(), fieldValue.getKey(), fieldValue.getValue()); } } }
public String format(LogRecord record) { Calendar c = Calendar.getInstance(); c.setTimeInMillis(record.getMillis()); String message = "[" + c.getTime().toString() + "]" + " " + record.getLevel() + ":" + " " + record.getMessage() + "\n"; return message; }
private void saveStartProjects(File file) throws IOException { Calendar cal = Calendar.getInstance(); try (PrintWriter out = new PrintWriter(file, "windows-1251")) { for (Region region : this.regions) { cal.setTime(region.start); out.write("\""); out.write(region.filial + " " + region.name); out.write("\";;;"); int skeepCells = (cal.get(Calendar.YEAR) - 2017) * 5 + (cal.get(Calendar.MONDAY) % 4); for (int i = 0; i < skeepCells; i++) { out.write(";"); } out.println("X"); } } }
/** Clones result COPYING all data into new variables. */ public Object clone() { final ParseResult cloned = new ParseResult(); for (int i = 0; i < this.symbols.size(); i++) { cloned.symbols.add(this.symbols.get(i)); } for (final Map.Entry<String, Map<Field, Double>> entry1 : this.values.entrySet()) { final Map<Field, Double> vals = new HashMap<Field, Double>(); for (final Map.Entry<Field, Double> entry2 : entry1.getValue().entrySet()) { vals.put(entry2.getKey(), entry2.getValue()); } cloned.values.put(entry1.getKey(), vals); } for (final Calendar c : this.calendars) { cloned.calendars.add((Calendar) c.clone()); } return cloned; }
private void saveExcelPoject(File file) throws IOException { Workbook wb = new XSSFWorkbook(); Sheet sheet = wb.createSheet("timeplan"); // Заголовок в 0 строке Row row = sheet.createRow(0); Cell cell = row.createCell(0); cell.setCellValue("Филиал"); cell = row.createCell(1); cell.setCellValue("Город"); Calendar cal = Calendar.getInstance(); cal.set(2017, 0, 5); // Начальная дата проекта SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yy"); for (int i = 0; i < 3 * 52; i++) { // Счетчик по неделям cell = row.createCell(i + 2); cell.setCellValue(sdf.format(cal.getTime())); cal.add(Calendar.WEEK_OF_YEAR, 1); // Следующая неделя } // sheet.setColumnWidth(0, 256); // Цвета ячеек CellStyle[] styles = new CellStyle[6]; styles[0] = wb.createCellStyle(); styles[0].setFillForegroundColor(HSSFColor.RED.index); styles[0].setFillPattern(FillPatternType.SOLID_FOREGROUND); styles[1] = wb.createCellStyle(); styles[1].setFillForegroundColor(HSSFColor.GREEN.index); styles[1].setFillPattern(FillPatternType.SOLID_FOREGROUND); styles[2] = wb.createCellStyle(); styles[2].setFillForegroundColor(HSSFColor.BLUE.index); styles[2].setFillPattern(FillPatternType.SOLID_FOREGROUND); styles[3] = wb.createCellStyle(); styles[3].setFillForegroundColor(HSSFColor.ROSE.index); styles[3].setFillPattern(FillPatternType.SOLID_FOREGROUND); styles[4] = wb.createCellStyle(); styles[4].setFillForegroundColor(HSSFColor.LIGHT_BLUE.index); styles[4].setFillPattern(FillPatternType.SOLID_FOREGROUND); styles[5] = wb.createCellStyle(); styles[5].setFillForegroundColor(HSSFColor.LIGHT_GREEN.index); styles[5].setFillPattern(FillPatternType.SOLID_FOREGROUND); short rowIdx = 0; for (Region region : this.regions) { row = sheet.createRow(++rowIdx); cell = row.createCell(0); cell.setCellValue(region.filial); cell = row.createCell(1); cell.setCellValue(region.name); cal = Calendar.getInstance(); cal.set(2017, 0, 5); // Начальная дата проекта for (int i = 0; i < 3 * 52; i++) { // Счетчик по неделям short color = region.getDateColorIndex(cal.getTime()); if (color >= 0) { cell = row.createCell(i + 2); cell.setCellStyle(styles[color]); } cal.add(Calendar.WEEK_OF_YEAR, 1); // Следующая неделя } } try (FileOutputStream fileOut = new FileOutputStream(file)) { wb.write(fileOut); } }
/** Returns A COPY of the local timestamp set to GMT+0 */ public Calendar getUTCTimestampCopy() { final Calendar cloned = (Calendar) this.calendars.get(0).clone(); cloned.setTimeZone(TimeZone.getTimeZone("GMT")); return cloned; }
/** * Initialises the class and internal logger. Uses the supplied arguments to receive data from the * application and add data to the charts dynamically. * * @param title The title of the charts on display. Whether the displayed data is for <code>new * </code> or <code>old</code> links. That is whether the data is for newly discovered links * or existing (old) links already stored within the database. * @param parent The instance of <code>COMPortClient</code> that acts as the data source for the * charts. */ public LinkChart(String title, COMPortClient parent) { super("Charts", true, true, true, true); super.setLayer(1); identifier = title.toLowerCase(); // Obtain an instance of Logger for the class log = LoggerFactory.getLogger(className); owner = parent; // Setup a hashtable to hold the values for up, down and unknown link states Hashtable<String, Integer> linkStats = new Hashtable<String, Integer>(); if (identifier.equals("old")) { this.setTitle("Recognised Link Status on " + owner.getPortName() + ":"); // Get the current figures from the link table linkStats = ((LinkTable) owner.getLinkTable().getModel()).getInitialFigures(); } else if (identifier.equals("new")) { this.setTitle("Discovered Link Status on " + owner.getPortName() + ":"); linkStats = ((LinkTable) owner.getNewLinkTable().getModel()).getInitialFigures(); } else { // If the identifier was set to something other than old or new then it's not right. log.warning("An instance of LinkChart has been created for an unknown purpose."); return; } // Initialise the dataset for the pie chart dpdCurrentData = new DefaultPieDataset(); dpdCurrentData.insertValue(0, "Link Down", linkStats.get("down")); dpdCurrentData.insertValue(1, "Link Up", linkStats.get("up")); dpdCurrentData.insertValue(2, "Link State Unknown", linkStats.get("unknown")); // Initialise the dataset for the line chart dcdPreviousData = new DefaultCategoryDataset(); dcdPreviousData.addValue( linkStats.get("down"), "Link Down", Calendar.getInstance().getTime().toString()); dcdPreviousData.addValue( linkStats.get("up"), "Link Up", Calendar.getInstance().getTime().toString()); dcdPreviousData.addValue( linkStats.get("unknown"), "Link State Unknown", Calendar.getInstance().getTime().toString()); // Set the variables we need for holding the charts JFreeChart jfcCurrentStatus; // This will be displayed as a pie chart JFreeChart jfcPreviousStatus; // This will be displayed as a line chart ChartPanel cpCurrent; // Chartpanels hold the JFreeChart ChartPanel cpPrevious; // Use the factory to create the charts jfcCurrentStatus = ChartFactory.createPieChart("Current Status", dpdCurrentData, true, true, false); jfcPreviousStatus = ChartFactory.createLineChart( "Previous Status", "Time received", "Number of Links", dcdPreviousData, PlotOrientation.VERTICAL, true, true, false); // Add them to the chart panels cpCurrent = new ChartPanel(jfcCurrentStatus); cpPrevious = new ChartPanel(jfcPreviousStatus); // Add the chart panels to the content pane this.add(cpCurrent, BorderLayout.EAST); this.add(cpPrevious, BorderLayout.WEST); // Change the layout to show them next to each other this.setLayout(new GridLayout(1, 2)); // Add a listener to the window this.addInternalFrameListener(new CloseLinkChart(this)); log.finest("Adding frame to the desktop"); // Set the window properties and display it Client.getJNWindow().addToDesktop(this); this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); this.setSize(650, 400); this.setVisible(true); owner.addChartWindow(title, this); }