diff --git a/.idea/encodings.xml b/.idea/encodings.xml
index 2e11521..2a99450 100644
--- a/.idea/encodings.xml
+++ b/.idea/encodings.xml
@@ -1,17 +1,17 @@
-
-
-
-
+
+
+
+
-
-
+
+
-
-
+
+
-
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 27a3f75..abda8b0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,6 +7,10 @@
Reporter
Reporter
1.0-SNAPSHOT
+
+ UTF-8
+ UTF-8
+
codelds
diff --git a/src/main/java/Controller/Controller.java b/src/main/java/Controller/Controller.java
index 6e377a8..a79def3 100644
--- a/src/main/java/Controller/Controller.java
+++ b/src/main/java/Controller/Controller.java
@@ -10,6 +10,7 @@
import javax.swing.*;
import java.awt.*;
import java.io.*;
+import java.nio.charset.Charset;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.sql.Connection;
@@ -20,9 +21,8 @@
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.List;
-import java.util.concurrent.PriorityBlockingQueue;
+import java.util.concurrent.*;
-import static java.lang.Thread.sleep;
public class Controller {
@@ -30,32 +30,41 @@ public class Controller {
private static PriorityBlockingQueue tasksQueue = new PriorityBlockingQueue<>();
private static SqlExecutor sqlExecutor;
private static MyFrame frame;
+ private static StartUpWindow startFrame;
+ private static StringCrypter stringCrypter = new StringCrypter();
static public void main(String[] args) {
- if (!checkLisence(true)) {
- new LogginWindow();
+ startFrame = new StartUpWindow("Reading startup parameters...");
+ startFrame.setVisible(true);
+ if (BaseConstants.getInstance()==null){
+ startFrame.setMessage("File " + BaseConstants.startFile + " not found!" );
+ return;
+ }
+ startFrame.setMessage("monitor.ini handled properly. Please wait some minutes for initialization...");
+ if (!checkLisence(BaseConstants.isIsZip())) {
+ startFrame.dispose();
+ new LicenseWindow();
} else {
- init();
+ startFrame.dispose();
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ init(BaseConstants.isIsZip());
+ }
+ });
+
}
}
- public static void init() {
- initWorkingPool(BaseConstants.getInstance().isIsZip());
- new Thread(() -> createThreads()).start();
-
- frame = new MyFrame("Hello world of SWING!", null);
- frame.setPreferredSize(new Dimension(1500, 500));
- while (sqlExecutor == null) {
- System.out.println("SQLExecuter is null...");
- try {
- sleep(1000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- frame.getProccessesPanel().init(sqlExecutor.getWorkingPool());
+ public static void init(boolean isZip) {
+ initWorkingPool(isZip);
+ // Here starts sqlExecuter with tasksQueue
+ new Thread(() -> createSqlExecuter()).start();
+ frame = new MyFrame("Monitoring - analyzing. Useful edition.", null);
+ frame.setPreferredSize(new Dimension(1000, 500));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ frame.getProccessesPanel().init(SqlExecutor.getWaitingQueue());
frame.pack();
frame.setVisible(true);
@@ -73,23 +82,32 @@ private static boolean checkLisence(boolean b) {
headers = zipFile.getFileHeaders();
}
} catch (ZipException e) {
- e.printStackTrace();
+ e.printStackTrace(); Printer.saveLogFile(e);
}
for (FileHeader fh : headers) {
- if (!fh.isDirectory() && fh.getFileName().equals("liesence.txt")) {
- try (BufferedReader bf = new BufferedReader(new InputStreamReader(zipFile.getInputStream(fh)))) {
+ if (!fh.isDirectory() && fh.getFileName().endsWith("liesence.txt")) {
+ BaseConstants.setLiesencePath(fh.getFileName());
+ try (BufferedReader bf = new BufferedReader(new InputStreamReader(zipFile.getInputStream(fh), Charset.forName("UTF-8")))) {
return checkKey(bf.readLine());
- } catch (IOException e) {
- e.printStackTrace();
} catch (ZipException e) {
- e.printStackTrace();
+ Printer.printLog(e);
+ }
+ catch (IOException e) {
+ Printer.printLog(e);
}
}
}
return false;
} else {
- return true;
+ try (BufferedReader bf = new BufferedReader(new InputStreamReader(new FileInputStream(BaseConstants.getLiesencePath()),Charset.forName("UTF-8"))))
+ {return checkKey(bf.readLine());
+ } catch (FileNotFoundException e) {
+ Printer.printLog(e);
+ } catch (IOException e) {
+ Printer.printLog(e);
+ }
}
+ return false;
}
private static Calendar stringToCalendar(String s) {
@@ -101,6 +119,7 @@ private static Calendar stringToCalendar(String s) {
return new GregorianCalendar(yyyy, mm, dd);
}
+ /* Initalizing tasksQueue with objects of SqlProperties. SqlPropeties reads from report files*/
private static void initWorkingPool(boolean isEncrypted) {
try {
if (isEncrypted) {
@@ -109,11 +128,11 @@ private static void initWorkingPool(boolean isEncrypted) {
readFolderSql();
}
} catch (ZipException e) {
- e.printStackTrace();
- System.out.println("File " + BaseConstants.getInstance().getZipFileSQL() + " generated I/O exception!");
+ Printer.printLog(e);
+ Printer.printLog("File " + BaseConstants.getInstance().getZipFileSQL() + " generated I/O exception!");
} catch (IOException e) {
- e.printStackTrace();
- System.out.println("Folder " + BaseConstants.getInstance().getPathSQL() + " generated I/O exception!");
+ Printer.printLog(e);
+ Printer.printLog("Folder " + BaseConstants.getInstance().getPathSQL() + " generated I/O exception!");
}
}
@@ -141,69 +160,87 @@ private static void readZipFile() throws ZipException {
}
List headers = zipFile.getFileHeaders();
for (FileHeader fh : headers) {
- System.out.println("Entry: " + fh.getFileName());
+ Printer.printLog("Entry: " + fh.getFileName());
if (!fh.isDirectory() && fh.getFileName().endsWith(".rep")) {
SqlProperties prop = new SqlProperties(true);
- prop.loadFromFile(new InputStreamReader(zipFile.getInputStream(fh)), fh.getFileName());
+ prop.loadFromFile(new InputStreamReader(zipFile.getInputStream(fh),Charset.forName("UTF-8")), fh.getFileName());
tasksQueue.put(prop);
}
}
}
- public static void createThreads() {
+ public static void createSqlExecuter() {
if (tasksQueue.size() > 0) {
- Printer.printRowToMonitor(String.valueOf(tasksQueue.size()));
+ Printer.printLog(String.valueOf(tasksQueue.size()));
sqlExecutor = new SqlExecutor(tasksQueue);
sqlExecutor.run();
}
}
public static boolean checkKey(String text) {
- String decodeData = Desipher.decodeData(text);
+ String decodeData = stringCrypter.decrypt(text);
if (decodeData == null) return false;
Calendar c = stringToCalendar(decodeData);
if (c == null) return false;
- if (c.getTimeInMillis() - getCurrentDate().getTimeInMillis() >= 0) {
- return true;
- } else {
- return false;
+ c.add(Calendar.MONTH,-1);
+ long currentDate =0;
+
+ try {
+ currentDate = getCurrentDate().getTimeInMillis();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ } catch (ExecutionException e) {
+ e.printStackTrace();
}
+
+ return c.getTimeInMillis() - currentDate >= 0;
}
- private static Calendar getCurrentDate() {
+ private static Calendar getCurrentDate() throws InterruptedException, ExecutionException {
String sqlClause = "select to_char (current_date, 'dd.MM.yyyy') from dual";
- String sDate = null;
- for (Map.Entry pair :
- BaseConstants.getDbase().entrySet()) {
- Connection conn = ConnectorToOracle.getInstance().getConnection(pair.getKey());
- if (conn==null) continue;
- Statement stm = null;
- try {
- stm = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
- stm.execute(sqlClause);
- ResultSet resultSet = stm.getResultSet();
- resultSet.next();
- sDate = resultSet.getString(1);
- resultSet.close();
- stm.close();
- conn.close();
- break;
- } catch (SQLException e) {
- e.printStackTrace();
- }
-
- }
+ String sDate=null;
+ for (Map.Entry pair : BaseConstants.getDbase().entrySet()) {
+ FutureTask task = new FutureTask(new Callable() {
+ @Override
+ public Object call() throws Exception {
+ try {
+ Connection conn = ConnectorToOracle.getInstance().getConnection(pair.getKey());
+ if (conn==null) return null;
+ Statement stm = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
+ stm.execute(sqlClause);
+ ResultSet resultSet = stm.getResultSet();
+ resultSet.next();
+ String sDate = resultSet.getString(1);
+ resultSet.close();
+ stm.close();
+ conn.close();
+ return sDate;
+ } catch (SQLException e) {
+ Printer.printLog(e);
+ }
+ return null;
+ }
+ });
+ Thread th= new Thread (task);
+ th.start();
+ try {
+ sDate=(String) task.get(300,TimeUnit.SECONDS);
+ } catch (TimeoutException e) {
+ e.printStackTrace();
+ }
+ if (sDate!=null) break;
+ }
if (sDate != null) {
Calendar cal = new GregorianCalendar();
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
try {
cal.setTime(sdf.parse(sDate));
- System.out.println("Oracle date " + sDate);
+ Printer.printLog("Oracle date " + sDate);
return cal;
} catch (ParseException e) {
- e.printStackTrace();
- }
+ Printer.saveLogFile(e);
+ }
}
return Calendar.getInstance();
diff --git a/src/main/java/Frames/DetailEvent.java b/src/main/java/Frames/DetailEvent.java
deleted file mode 100644
index 2793693..0000000
--- a/src/main/java/Frames/DetailEvent.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package Frames;
-
-import java.util.EventObject;
-
-public class DetailEvent extends EventObject {
- private String text;
- public DetailEvent(Object source, String text) {
- super(source);
- this.text=text;
- }
-
- public String getText() {
- return text;
- }
-
-}
diff --git a/src/main/java/Frames/DetailListener.java b/src/main/java/Frames/DetailListener.java
deleted file mode 100644
index ff23262..0000000
--- a/src/main/java/Frames/DetailListener.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package Frames;
-
-
-import java.util.EventListener;
-
-public interface DetailListener extends EventListener {
- public void detailEventOccurred (DetailEvent event);
-
-
-}
diff --git a/src/main/java/Frames/DetailsPanel.java b/src/main/java/Frames/DetailsPanel.java
deleted file mode 100644
index 6efc10c..0000000
--- a/src/main/java/Frames/DetailsPanel.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package Frames;
-
-import javax.swing.*;
-import javax.swing.event.EventListenerList;
-import java.awt.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-
-
-public class DetailsPanel extends JPanel {
- private EventListenerList listenerList = new EventListenerList();
-
-
- public DetailsPanel() {
- Dimension size=getPreferredSize();
- size.width=250;
- setPreferredSize(size);
- setBorder(BorderFactory.createTitledBorder("Personal Details"));
- JLabel nameLabel = new JLabel("Name: ");
- JLabel occupationLabel = new JLabel("Occupation: ");
-
- JTextField nameField = new JTextField(10);
- JTextField occupationField = new JTextField(10);
-
- JButton addBtn = new JButton("Add");
- addBtn.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- String name = nameField.getText();
- String occupation = occupationField.getText();
-
- String text = name + ": " + occupation + "\n";
- fireDetailEvent(new DetailEvent(this,text));
- }
- });
-
- setLayout(new GridBagLayout());
-
- GridBagConstraints gc = new GridBagConstraints();
-
- /// First Column
- gc.anchor = GridBagConstraints.LINE_END;//выровнять в право в столбце
- gc.weightx=0.5;
- gc.weighty=0.5;
-
- gc.gridx=0;
- gc.gridy=0;
- add(nameLabel,gc);
-
- gc.gridx=0;
- gc.gridy=1;
- add (occupationLabel,gc);
-
- ////Second column
- gc.anchor=GridBagConstraints.LINE_START;//выравнять в лево в столбце
- gc.gridx=1;
- gc.gridy=0;
- add(nameField,gc);
-
- gc.gridx=1;
- gc.gridy=1;
- add(occupationField,gc);
-
- //Final Row
- gc.weighty=10;
-
- gc.anchor=GridBagConstraints.FIRST_LINE_START;
- gc.gridx=1;
- gc.gridy=2;
- add (addBtn,gc);
-
- }
- /*пары - 1. - ссылка на класс, 2. сам объект */
- public void fireDetailEvent(DetailEvent event){
- add(new JTextArea("Test text area"));
- Object[] listeners = listenerList.getListenerList();
- for (int i=0;iThe period of use of the software has expired. Enter the new key.
Contact e-mail: albtutanota@tutanota.com");
+ private JLabel logginLabel = new JLabel(" Please, enter here new key: ");
+ private JTextField logginText = new JTextField(60);
+ private JButton logginButton = new JButton("Enter key");
+
+
+
+
+ public LicenseWindow() throws HeadlessException {
+ super ("License window");
+ setSize(new Dimension(400,150));
+ setLayout(new BorderLayout());
+ Container c= getContentPane();
+ c.add(textLabel,BorderLayout.NORTH);
+ textLabel.setHorizontalAlignment(0);
+ c.add(logginLabel,BorderLayout.WEST);
+ c.add(logginText,BorderLayout.CENTER);
+ c.add (logginButton,BorderLayout.SOUTH);
+ //c.add(new JLabel("Contact e-mail: albtutanota@tutanota.com"),BorderLayout.SOUTH);
+ setVisible(true);
+ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ logginButton.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ Printer.printLog("Button in LicenseWindow clicked!!!");
+ if (Controller.checkKey(logginText.getText())){
+ saveKey(logginText.getText());
+ Controller.init(BaseConstants.isIsZip());
+ }
+ dispose();
+ }
+ });
+
+ }
+
+ private void saveKey(String text) {
+ if (BaseConstants.isIsZip()) {
+ String zipFilePath = BaseConstants.getInstance().getZipFileSQL();
+ FileHeader fHeader = null;
+ ZipFile zipFile = null;
+ try {
+ zipFile = new ZipFile(zipFilePath);
+ if (zipFile.isEncrypted()) {
+ zipFile.setPassword(BaseConstants.getInstance().getZipPsw());
+ }
+ fHeader = zipFile.getFileHeader(BaseConstants.getLiesencePath());
+ zipFile.removeFile(fHeader);
+
+ } catch (ZipException e) {
+ Printer.printLog(e);
+ }
+ try (InputStream is = new ByteArrayInputStream(text.getBytes("utf-8"))) {
+ ZipParameters zp = new ZipParameters();
+ zp.setSourceExternalStream(true);
+ zp.setFileNameInZip(fHeader.getFileName());
+ zp.setPassword(BaseConstants.getInstance().getZipPsw());
+ zipFile.addStream(is, zp);
+ } catch (UnsupportedEncodingException e) {
+ Printer.printLog(e);
+ } catch (IOException e) {
+ Printer.printLog(e);
+ } catch (ZipException e) {
+ Printer.printLog(e);
+ }
+ }
+ else{
+ try (BufferedWriter bfw = new BufferedWriter(new FileWriter(BaseConstants.getLiesencePath())))
+ {
+ bfw.write(text);
+ } catch (FileNotFoundException e) {
+ Printer.printLog(e);
+ } catch (IOException e) {
+ Printer.printLog(e);
+ }
+
+ }
+ }
+
+
+}
diff --git a/src/main/java/Frames/LogginWindow.java b/src/main/java/Frames/LogginWindow.java
deleted file mode 100644
index a9894b8..0000000
--- a/src/main/java/Frames/LogginWindow.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package Frames;
-
-import Controller.Controller;
-import Utilz.BaseConstants;
-import net.lingala.zip4j.core.ZipFile;
-import net.lingala.zip4j.exception.ZipException;
-import net.lingala.zip4j.model.FileHeader;
-import net.lingala.zip4j.model.ZipParameters;
-
-import javax.swing.*;
-import java.awt.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-
-public class LogginWindow extends JFrame {
- private JLabel textLabel = new JLabel("The period of use of the software has expired. Enter the new key.");
- private JLabel logginLabel = new JLabel(" Please, enter here new key: ");
- private JTextField logginText = new JTextField(60);
- private JButton logginButton = new JButton("Enter key");
-
-
-
-
- public LogginWindow() throws HeadlessException {
- super ("License window");
- setSize(new Dimension(400,150));
- setLayout(new BorderLayout());
- Container c= getContentPane();
- c.add(textLabel,BorderLayout.NORTH);
- textLabel.setHorizontalAlignment(0);
- c.add(logginLabel,BorderLayout.WEST);
- c.add(logginText,BorderLayout.CENTER);
- c.add (logginButton,BorderLayout.SOUTH);
- setVisible(true);
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- logginButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- System.out.println("Button clicked!!!");
- if (Controller.checkKey(logginText.getText())){
- saveKey(logginText.getText());
- Controller.init();
- }
- dispose();
- }
- });
-
- }
-
- private void saveKey(String text) {
- String zipFilePath = BaseConstants.getInstance().getZipFileSQL();
- FileHeader fHeader=null;
- ZipFile zipFile =null;
- try {
- zipFile=new ZipFile(zipFilePath);
- if (zipFile.isEncrypted()){
- zipFile.setPassword(BaseConstants.getInstance().getZipPsw());
- }
- fHeader =zipFile.getFileHeader("liesence.txt");
- zipFile.removeFile(fHeader);
-
- } catch (ZipException e) {
- e.printStackTrace();
- }
- try (InputStream is = new ByteArrayInputStream(text.getBytes("utf-8"))) {
- ZipParameters zp = new ZipParameters();
- zp.setSourceExternalStream(true);
- zp.setFileNameInZip(fHeader.getFileName());
- zp.setPassword(BaseConstants.getInstance().getZipPsw());
- zipFile.addStream(is, zp);
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (ZipException e) {
- e.printStackTrace();
- }
- }
-
-
-}
diff --git a/src/main/java/Frames/MyFrame.java b/src/main/java/Frames/MyFrame.java
index 3e2c370..806a3f1 100644
--- a/src/main/java/Frames/MyFrame.java
+++ b/src/main/java/Frames/MyFrame.java
@@ -9,15 +9,9 @@
public class MyFrame extends JFrame {
- private DetailsPanel detailsPanel;
private ProccessesPanelTab proccessesPanel;
- private TestPanel testPanel;
private ResultView resultView = new ResultView();
- //private JTextArea textArea = new JTextArea();
-
- public ResultView getTextArea() {
- return resultView;
- }
+ private JTextArea description = new JTextArea();
public MyFrame (String title, Map statusMap){
super(title);
@@ -25,13 +19,45 @@ public MyFrame (String title, Map statusMap){
setLayout(new BorderLayout());
//Add swing components to content pane
Container c = getContentPane();
- c.add(resultView,BorderLayout.CENTER);
proccessesPanel=new ProccessesPanelTab();
- c.add(proccessesPanel, BorderLayout.WEST);
+ JSplitPane jSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true);
+ JSplitPane right = setHorizontalSplitPanel();
+ jSplitPane.setResizeWeight(0.5);
+ jSplitPane.setRightComponent(right);
+ jSplitPane.setLeftComponent(proccessesPanel);
+ BorderLayout bl = new BorderLayout();
+ c.setLayout(bl);
+ c.add(jSplitPane,BorderLayout.CENTER);
+ c.add(new JLabel("Contact e-mail: albtutanota@tutanota.com"),BorderLayout.SOUTH);
+
}
public ProccessesPanelTab getProccessesPanel() {
return proccessesPanel;
}
+ public ResultView getTextArea() { return resultView;}
+ public JTextArea getDescriptionArea(){return description;}
+
+ private JSplitPane setHorizontalSplitPanel(){
+ JSplitPane jSplitPaneInternal = new JSplitPane(JSplitPane.VERTICAL_SPLIT, true);
+ jSplitPaneInternal.setTopComponent(resultView);
+ description.setLineWrap(true);
+ description.setWrapStyleWord(true);
+ description.setEditable(false);
+ description.setPreferredSize(new Dimension(300,100));
+ JScrollPane jsc = new JScrollPane();
+ jsc.setViewportView(description);
+ jSplitPaneInternal.setBottomComponent(jsc);
+ return jSplitPaneInternal;
+
+ }
+ private JPanel setRightSplitPanel(){
+ JPanel panel = new JPanel();
+ panel.setLayout(new BorderLayout());
+ panel.add(resultView,BorderLayout.NORTH);
+ //description.setLineWrap(true);
+ panel.add(description,BorderLayout.SOUTH);
+ return panel;
+ }
}
diff --git a/src/main/java/Frames/ProccessTableModel.java b/src/main/java/Frames/ProccessTableModel.java
deleted file mode 100644
index 5aebb67..0000000
--- a/src/main/java/Frames/ProccessTableModel.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package Frames;
-
-import javax.swing.table.AbstractTableModel;
-import java.lang.reflect.Array;
-import java.util.ArrayList;
-
-public class ProccessTableModel extends AbstractTableModel {
- private int columnCount=5;
- private ArrayList dataArrayList;
-
-
- public ProccessTableModel() {
- dataArrayList=new ArrayList();
- for (int i=0;i waitingQueue;
- private static BlockingQueue runningQueue ;
-
-
-
- private static Map statusMap;
- private static List processList;
- private List> elements = new ArrayList<>();
- private GridBagConstraints gc;
- private JPanel jPanel;
- private GridBagLayout layout ;
- private GridBagConstraints gbc;
- private MyFrame myFrame;
- private JLabel greenLabel=null;
- private List greenLine=null;
- private Color greenColor = new Color (10,200,10);
- private Color grayColor = null;
- private List header= new ArrayList<>();
-
-
-
-
- public void setStatusMap(Map statusMap) {
- if (statusMap==null){
- throw new NullPointerException("ProccessPanel.setStatusMap get null parameter");
- }
- myFrame = (MyFrame) getParent().getParent().getParent().getParent();
- ProccessesPanel.statusMap = statusMap;
-// layout = new GridLayout(/*ProccessesPanel.statusMap.size()*/1, 4, 5, 1);
- layout = new GridBagLayout();
- jPanel = new JPanel();
- jPanel.setLayout(layout);
- jPanel.setBorder(BorderFactory.createTitledBorder("Task list jpanel"));
-
-
- gbc = new GridBagConstraints(0,0,1,1,1,1,
- GridBagConstraints.NORTH, GridBagConstraints.BOTH,
- new Insets(2,0,2,0),1,1);
-
- Border bottomBorder = BorderFactory.createCompoundBorder();
- bottomBorder=BorderFactory.createCompoundBorder(bottomBorder,BorderFactory.createMatteBorder(0,0,2,0,Color.gray));
-
- JLabel jLabel1 =new JLabel("DESCRIPTION");
- jLabel1.setBorder(bottomBorder);
- jPanel.add(jLabel1,gbc);
- gbc.gridx=1;
- JLabel jLabel2 =new JLabel("CURRENT STATUS");
- jLabel2.setBorder(bottomBorder);
- jPanel.add(jLabel2,gbc);
- gbc.gridx=2;
- JLabel jLabel3 =new JLabel("LAST EXECUTION TIME");
- jLabel3.setBorder(bottomBorder);
- jPanel.add(jLabel3,gbc);
- gbc.gridx=3;
- JLabel jLabel4 =new JLabel("WAIT TIME");
- jLabel4.setBorder(bottomBorder);
- jPanel.add(jLabel4,gbc);
-
- //updateJComponentsFromQueue();
- setViewportView(jPanel);
-
- setBorder(BorderFactory.createTitledBorder("This is ScrollPanel"));
- setPreferredSize(new Dimension(600,100));
- updateJComponentsFromQueue();
- }
-
- public ProccessesPanel (){
- // this.myFrame = myFrame;
- }
-
- private void updateJComponentsFromQueue() {
- if (statusMap==null)return;
- Point pos = getViewport().getViewPosition();
- /*if (layout==null) {
- layout = new GridLayout(ProccessesPanel.statusMap.size(), 4, 5, 1);
- jPanel.setLayout(layout);
- }*/
- /*зачищаем панель от элементов*/
- for (int i =0;i pair:
- statusMap.entrySet()) {
- String threadStatus = pair.getValue()?"running":"asleep";
-
- List componentRow = Arrays.asList(
- new JLabel(pair.getKey().getProperty("description")),
- new JLabel(threadStatus),
- new JLabel(pair.getKey().getProperty("timeStampLastExecution")),
- new JLabel (ms_totime (Long.valueOf(pair.getKey().getProperty("asleeptime"))))
- );
-
- componentRow.get(0).addMouseListener(new GetDetails());
- if (greenLine!=null && ((JLabel)componentRow.get(0)).getText().equals(((JLabel)greenLine.get(0)).getText())){
- setLineColor(componentRow, greenColor);
- }
- gbc.gridy=y++;
- gbc.gridx=x++;
- jPanel.add(componentRow.get(0),gbc);
- gbc.gridx=x++;
- jPanel.add(componentRow.get(1),gbc);
- gbc.gridx=x++;
- jPanel.add(componentRow.get(2),gbc);
- gbc.gridx=x++;
- jPanel.add(componentRow.get(3),gbc);
- gbc.gridx=0;
- x=0;
- elements.add(componentRow);
-
- //addJComponent();
-
- jPanel.revalidate();
- getViewport().setViewPosition(pos);
- //getVerticalScrollBar().setValue(pos);
- //jPanel.repaint();
- }
-
- }
-
- private void setLineColor(List componentRow, Color color) {
- for (JComponent jLabel:componentRow) {
- jLabel.setOpaque(true);
- ((JLabel)jLabel).setBackground(color);
- }
- if (greenLine!=null) {
- for (JComponent jLabel : greenLine) {
- ((JLabel) jLabel).setBackground(null);
- }
- }
- greenLine=componentRow;
- }
- private void setLineColor(JComponent component, Color color) {
- for(List list:elements){
- for (JComponent comp:list){
- if (comp==component){
- setLineColor(list,color);
- }
- }
- }
- }
- private String ms_totime(long ms) {
- Integer [] time = new Integer[4];
- time[3] = (int)ms/86400000;
- ms=ms%86400000;
- time[2] = (int)ms/3600000;
- ms=ms%3600000;
- time[1] = (int)ms/60000;
- ms=ms%60000;
- time[0] = (int)ms/1000;
- ms=ms%1000;
- StringBuilder formatted_time = new StringBuilder();
- for (int i=time.length-1;i>=0;i--){
- if (time[i].toString().length()<2) {
- formatted_time.append('0');
- }
- formatted_time.append(time[i]);
- formatted_time.append(":");
- }
- formatted_time.deleteCharAt(formatted_time.length()-1);
- //System.out.println(formatted_time);
- return formatted_time.toString();
- }
-
- private void addJComponent() {
- for (int i=0;i componentList = Arrays.asList(new JLabel("description " +i), new JLabel("Time till start " + i), new JLabel("Time of last execution " + i));
- elements.add(componentList);
- }
- }
-
- synchronized public void updateProccessList (){
- updateJComponentsFromQueue();
-}
- private class GetDetails implements MouseListener {
-
- @Override
- public void mouseClicked(MouseEvent e) {
- JLabel source = (JLabel)e.getSource();
- String description= source.getText();
- List res = Printer.getResults(description);
- //////////////////////////////
- if (greenLine!=null){
- setLineColor(greenLine,greenColor);
- }
- setLineColor(source,greenColor);
- if (res==null) {
- myFrame.getTextArea().setText("no results");
- return;
- }
- myFrame.getTextArea().setText("Last run time " + res.get(1).toString()+ "\r\n");
- myFrame.getTextArea().append(res.get(0).toString());
-
- }
-
- @Override
- public void mousePressed(MouseEvent e) {
-
- }
-
- @Override
- public void mouseReleased(MouseEvent e) {
-
- }
-
- @Override
- public void mouseEntered(MouseEvent e) {
-
- }
-
- @Override
- public void mouseExited(MouseEvent e) {
-
- }
- }
-}
diff --git a/src/main/java/Frames/ProccessesPanelTab.java b/src/main/java/Frames/ProccessesPanelTab.java
index e4f66cc..b5324a3 100644
--- a/src/main/java/Frames/ProccessesPanelTab.java
+++ b/src/main/java/Frames/ProccessesPanelTab.java
@@ -16,26 +16,31 @@
import java.util.List;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.PriorityBlockingQueue;
+import java.util.stream.Collectors;
import static java.lang.Thread.sleep;
public class ProccessesPanelTab extends JScrollPane implements Runnable{
private static LinkedHashMap statusMap;
+ private List taskList= new ArrayList<>();
private MyFrame myFrame;
private ProccessesPanelTab.ProcessTableModel ptm;
private JTable proccessesTable;
+ private PriorityBlockingQueue queue;
- public void init (Map statusMap) {
- if (statusMap==null){
- throw new NullPointerException("ProccessPanel.setStatusMap get null parameter");
- }
- this.statusMap = (LinkedHashMap) statusMap;
- //this.initialMap = statusMap;
+
+ public void init (PriorityBlockingQueue queue) {
+
+ while (queue==null){
+ }
+
+ this.queue=queue;
+ taskList = queue.stream().collect(Collectors.toList());
try {
- myFrame = (MyFrame) getParent().getParent().getParent().getParent();}
+ myFrame = (MyFrame) getParent().getParent().getParent().getParent().getParent();}
catch(Exception e) {
}
ptm = new ProcessTableModel();
@@ -49,8 +54,34 @@ public void valueChanged(ListSelectionEvent e) {
if (row==-1) return;
String desc = (String)proccessesTable.getModel().getValueAt(row,0);
List res = Printer.getResults(desc);
- myFrame.getTextArea().setText("Last run time " + res.get(1).toString()+ "\r\n");
- myFrame.getTextArea().append(res.get(0).toString());
+ /*
+ if (!res.get(0).toString().equals(myFrame.getTextArea())){
+ myFrame.getTextArea().setText(res.get(0).toString());
+ }*/
+ if (!res.get(0).toString().equals(myFrame.getTextArea().getText().split("\r\n"))){
+ String resText="";
+ String[]arr=res.get(0).toString().split("\r\n");
+ for (int i=0;i300?300:arr[i].length();
+ resText+=arr[i].substring(0,length)+ "\r\n";
+ }
+ myFrame.getTextArea().setText(resText);
+ }
+ for (SqlProperties sqlP:taskList ) {
+ if (sqlP.getProperty("description").equals(desc)){
+ if (myFrame.getDescriptionArea().getText()==null && sqlP.getProperty("extendedDescription")!=null){
+ myFrame.getDescriptionArea().setText(sqlP.getProperty("extendedDescription"));
+ }
+ else if (myFrame.getDescriptionArea().getText()==null && sqlP.getProperty("extendedDescription")==null){
+ continue;
+ }
+ else if (!myFrame.getDescriptionArea().getText().equals(sqlP.getProperty("extendedDescription"))){
+ myFrame.getDescriptionArea().setText(sqlP.getProperty("extendedDescription"));
+ }
+ }
+ }
+
+
}
});
proccessesTable.setSelectionModel(ssm);
@@ -58,8 +89,8 @@ public void valueChanged(ListSelectionEvent e) {
proccessesTable.getColumnModel().getColumn(i).setCellRenderer(new Renderer());
}
setViewportView(proccessesTable);
- setBorder(BorderFactory.createTitledBorder("This is ScrollPanel"));
- setPreferredSize(new Dimension(600,100));
+ setBorder(BorderFactory.createTitledBorder("TaskPanel"));
+ setPreferredSize(new Dimension(500,100));
updateJComponentsFromQueue();
(new Thread(this)).start();
}
@@ -82,13 +113,13 @@ private void updateJComponentsFromQueue() {
private String ms_totime(long ms) {
Integer [] time = new Integer[4];
- time[3] = (int)ms/86400000;
+ time[3] = (int)(ms/86400000);
ms=ms%86400000;
- time[2] = (int)ms/3600000;
+ time[2] = (int)(ms/3600000);
ms=ms%3600000;
- time[1] = (int)ms/60000;
+ time[1] = (int)(ms/60000);
ms=ms%60000;
- time[0] = (int)ms/1000;
+ time[0] = (int)(ms/1000);
ms=ms%1000;
StringBuilder formatted_time = new StringBuilder();
for (int i=time.length-1;i>=0;i--){
@@ -99,7 +130,7 @@ private String ms_totime(long ms) {
formatted_time.append(":");
}
formatted_time.deleteCharAt(formatted_time.length()-1);
- // System.out.println(formatted_time);
+ // printRowToMonitor(formatted_time);
return formatted_time.toString();
}
@@ -109,28 +140,6 @@ private String ms_totime(long ms) {
public void run() {
while (true) {
try {
- /*
- for (int i = 0; i < ptm.getRowCount(); i++) {
- String key = (String) ptm.getValueAt(i, 0);
- SqlProperties keyObject = statusMap.keySet()
- .stream()
- .filter(s -> s.getProperty("description").equals(key))
- .findFirst()
- .get();
-
- String status= statusMap.get(key)?"running":"asleep";
- if (!ptm.getValueAt(i, 1).equals(status)) {
- ptm.setValueAt(status, i, 1);
- }
-
- if (!ptm.getValueAt(i, 2).equals(keyObject.getProperty("timeStampLastExecution"))) {
- ptm.setValueAt(keyObject.getProperty("timeStampLastExecution"), i, 2);
- }
- if (!ptm.getValueAt(i, 3).equals(ms_totime (Long.valueOf(keyObject.calcSleepingTime())))) {
- ptm.setValueAt(ms_totime (Long.valueOf(keyObject.calcSleepingTime())), i, 3);
- }
- ((AbstractTableModel)proccessesTable.getModel()).fireTableRowsUpdated(i,i);
- }*/
int row = proccessesTable.getSelectedRow();
ptm.fireTableDataChanged();
if (row!=-1)proccessesTable.setRowSelectionInterval(row,row);
@@ -139,7 +148,7 @@ public void run() {
sleep(1000);
} catch (InterruptedException e) {
- e.printStackTrace();
+ Printer.printLog(e);
}
}
}
@@ -149,7 +158,8 @@ private class ProcessTableModel extends AbstractTableModel {
@Override
public int getRowCount() {
- return statusMap.size();
+ return queue.size();
+ //return statusMap.size();
}
@Override
@@ -159,26 +169,14 @@ public int getColumnCount() {
@Override
public synchronized Object getValueAt(int rowIndex, int columnIndex) {
- Iterator> itr = statusMap.entrySet().iterator();
- int i=0;
- Map.Entry entry=null;
- while (itr.hasNext() ) {
- if (i==rowIndex){
- entry = itr.next();
- break;
- }
- i++;
- itr.next();
-
- }
+ SqlProperties entry=taskList.get(rowIndex);
String result=null;
switch (columnIndex){
- case 0: result=entry.getKey().getProperty("description");break;
- case 1: result=entry.getValue()?"running":"asleep";break;
- case 2: result=entry.getKey().getProperty("timeStampLastExecution");break;
- // case 3: result=ms_totime (Long.valueOf(entry.getKey().getProperty("asleeptime")));break;
- case 3: result=ms_totime (Long.valueOf(entry.getKey().calcSleepingTime()));break;
+ case 0: result=entry.getProperty("description");break;
+ case 1: result=entry.isRunning()?"running":"asleep";break;
+ case 2: result=entry.getProperty("timeStampLastExecution");break;
+ case 3: result=ms_totime (Long.valueOf(entry.calcSleepingTime()));break;
}
return result;
}
diff --git a/src/main/java/Frames/ResultView.java b/src/main/java/Frames/ResultView.java
index 897a660..4b70450 100644
--- a/src/main/java/Frames/ResultView.java
+++ b/src/main/java/Frames/ResultView.java
@@ -9,13 +9,17 @@ public class ResultView extends JScrollPane {
public ResultView() {
//textArea.setEnabled(false);
setViewportView(textArea);
- setBorder(BorderFactory.createTitledBorder("This is ScrollPanel"));
+ setBorder(BorderFactory.createTitledBorder("Task result panel"));
setPreferredSize(new Dimension(300,100));
+ textArea.setColumns(400);
}
public void setText (String text){
textArea.setText(text);
}
+ public String getText(){
+ return textArea.getText();
+ }
public void append (String text){
textArea.append(text);
}
diff --git a/src/main/java/Frames/StartUpWindow.java b/src/main/java/Frames/StartUpWindow.java
new file mode 100644
index 0000000..9b11dd9
--- /dev/null
+++ b/src/main/java/Frames/StartUpWindow.java
@@ -0,0 +1,32 @@
+package Frames;
+
+
+
+import javax.swing.*;
+import java.awt.*;
+
+public class StartUpWindow extends JFrame {
+ private JTextArea textLabel = new JTextArea();
+
+
+
+ public StartUpWindow(String message) throws HeadlessException {
+ super ("Start up window");
+ setSize(new Dimension(400,150));
+ setLayout(new BorderLayout());
+ Container c= getContentPane();
+ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ textLabel.setWrapStyleWord(true);
+ textLabel.setLineWrap(true);
+ textLabel.setEditable(false);
+ textLabel.setText(message);
+ textLabel.setBackground(getBackground());
+ c.add(textLabel,BorderLayout.NORTH);
+
+ }
+ public void setMessage (String message){
+ textLabel.setText(message);
+ }
+
+
+}
diff --git a/src/main/java/Frames/TestPanel.java b/src/main/java/Frames/TestPanel.java
deleted file mode 100644
index 544f693..0000000
--- a/src/main/java/Frames/TestPanel.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package Frames;
-
-import javax.swing.*;
-import java.awt.*;
-
-public class TestPanel extends JScrollPane implements Scrollable{
-
-
- public TestPanel(Component test) {
- super (test);
- }
-
- @Override
- public Dimension getPreferredScrollableViewportSize() {
- return new Dimension(100,100);
- }
-
- @Override
- public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) {
- return 2;
- }
-
- @Override
- public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) {
- return 2;
- }
-
- @Override
- public boolean getScrollableTracksViewportWidth() {
- return false;
- }
-
- @Override
- public boolean getScrollableTracksViewportHeight() {
- return true;
- }
-}
diff --git a/src/main/java/Reports/AbstratReports/AbstractExcelReport.java b/src/main/java/Reports/AbstratReports/AbstractExcelReport.java
index c76c928..030c5a0 100644
--- a/src/main/java/Reports/AbstratReports/AbstractExcelReport.java
+++ b/src/main/java/Reports/AbstratReports/AbstractExcelReport.java
@@ -3,6 +3,7 @@
import Utilz.Printer;
import Utilz.SqlExecutor;
import Utilz.SqlProperties;
+import Utilz.StringUtilz;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
@@ -31,13 +32,16 @@ public AbstractExcelReport(SqlProperties props, SqlExecutor sqlExecutor) {
if (getProperty("excel")!=null){
paths.add(getProperty("excel"));
}
- Printer.printRowToMonitor(" AbstractMonitor: c " + getProperty("description") + ", : " + getProperty("server"));
+ Printer.printRowToMonitor("Start thread " + getProperty("description") + ", server: " + getProperty("server") + " (AbstractExcelReport constructor)");
}
public abstract boolean createReport(ResultSet result);
@Override
public boolean createReport() {
resultSet=executeSqlClause(getProperty("sql"));
+ if (resultSet==null){
+ return false;
+ }
if (createReport(resultSet)){
StringBuilder resultSB = new StringBuilder();
resultSB.append("Report paths:" + "\r\n");
@@ -59,51 +63,51 @@ protected boolean createFile(HSSFWorkbook workbook){
File file = new File (getUniqFileName(s));
try (FileOutputStream fos = new FileOutputStream(file)){
workbook.write(fos);
- Printer.printRowToMonitor("File created " + s);
+ Printer.printLog("File created " + s);
} catch (IOException e) {
- e.printStackTrace();
- Printer.printRowToMonitor("Error when writing " + s+ " file!");
+ Printer.printLog(e);
+ Printer.printLog("Error when writing " + s+ " file!");
}
}
closeConnection(resultSet);
- flag= getProps().updatePeriodinFile();
- return flag;
+ //flag= getProps().updatePeriodinFile();
+ return true;
}
- /* */
+ /*Добавляет путь для выгрузки*/
protected void addUnloadPath(String outputFile){
paths.add(outputFile);
}
/*
- * delimiter
+ * Метод возвращают текущую дату в виде строки с разделителем delimiter
* */
protected String getCurrentDate (String delimiter){
Calendar c= new GregorianCalendar();
String sDate= String.valueOf(c.get(Calendar.DAY_OF_MONTH));
String sMonth = String.valueOf ((c.get(Calendar.MONTH)+1));
String sYear = String.valueOf (c.get(Calendar.YEAR));
- String currentDate= alignString (sDate,2,"0") +delimiter
- +alignString (sMonth,2,"0")+delimiter
- +alignString (sYear,4,"20");
+ String currentDate= StringUtilz.alignString (sDate,2,"0") +delimiter
+ +StringUtilz.alignString (sMonth,2,"0")+delimiter
+ +StringUtilz.alignString (sYear,4,"20");
return currentDate;
}
/*
- * sign quantitySigns
+ * Метод выравнивает длину строки знаками sign до длины строки quantitySigns
* */
- protected String alignString (String object, int quantitySigns, String sign){
+ /* protected String alignString (String object, int quantitySigns, String sign){
if (object.length()>=quantitySigns) return object;
StringBuilder result = new StringBuilder(object);
while (result.length() headerXLS, HSSFSheet worksheet, HSSFCe
createHeader(headerXLS,style,row,column);
}
/*
- * @Param column -
+ * @Param column - номер столбца с которого начнется в ставка
* */
protected void createHeader (List headerXLS, HSSFCellStyle style,Row row, int column ){
for (int i=0;i headerXLS, HSSFCellStyle style,Row row
protected void createVerticalHeader (List headerXLS, HSSFCellStyle style,HSSFSheet sheet, int rowNum,int colNum ){
for (int i=0;i headerXLS = new ArrayList();
- headerXLS.add(" ");
- headerXLS.add("10 ");
- headerXLS.add("10 ");
- headerXLS.add("10 , %");
+ headerXLS.add("Код ТО");
+ headerXLS.add("ЭК10 ГОД Регистрация");
+ headerXLS.add("ЭК10 ГОД АвтоРегистрация");
+ headerXLS.add("ЭК10 ГОД Доля, %");
- headerXLS.add("10 ");
- headerXLS.add("10 ");
- headerXLS.add("10 , %");
+ headerXLS.add("ЭК10 Неделя Регистрация");
+ headerXLS.add("ЭК10 Неделя АвтоРегистрация");
+ headerXLS.add("ЭК10 Неделя Доля, %");
- headerXLS.add("40,78 ");
- headerXLS.add("40,78 ");
- headerXLS.add("40,78 , %");
+ headerXLS.add("ИМ40,78 ГОД Регистрация");
+ headerXLS.add("ИМ40,78 ГОД АвтоРегистрация");
+ headerXLS.add("ИМ40,78 ГОД Доля, %");
- headerXLS.add("40,78 ");
- headerXLS.add("40,78 ");
- headerXLS.add("40,78 , %");
+ headerXLS.add("ИМ40,78 Неделя Регистрация");
+ headerXLS.add("ИМ40,78 Неделя АвтоРегистрация");
+ headerXLS.add("ИМ40,78 Неделя Доля, %");
- headerXLS.add("10 ");
- headerXLS.add("10 ");
- headerXLS.add("10 , %");
+ headerXLS.add("ЭК10 ГОД Выпуск");
+ headerXLS.add("ЭК10 ГОД АвтоВыпуск");
+ headerXLS.add("ЭК10 ГОД Доля автовыпуск, %");
- headerXLS.add("10 ");
- headerXLS.add("10 ");
- headerXLS.add("10 , %");
+ headerXLS.add("ЭК10 Неделя Выпуск");
+ headerXLS.add("ЭК10 Неделя АвтоВыпуск");
+ headerXLS.add("ЭК10 Неделя Доля автовыпуск, %");
- headerXLS.add("40 ");
- headerXLS.add("40 ");
- headerXLS.add("40 , %");
+ headerXLS.add("ИМ40 ГОД выпуск");
+ headerXLS.add("ИМ40 ГОД Автовыпуск");
+ headerXLS.add("ИМ40 ГОД Доля автовыпуска, %");
- headerXLS.add("40 ");
- headerXLS.add("40 ");
- headerXLS.add("40 , %");
+ headerXLS.add("ИМ40 Неделя выпуск");
+ headerXLS.add("ИМ40 Неделя Автовыпуск");
+ headerXLS.add("ИМ40 Неделя Доля автовыпуск, %");
- headerXLS.add(" ");
- headerXLS.add(" ");
- headerXLS.add(" , %");
+ headerXLS.add("Все таможенные процедуры за год");
+ headerXLS.add("ТУВ за год");
+ headerXLS.add("Доля ТУВ за год, %");
- headerXLS.add(" ");
- headerXLS.add(" ");
- headerXLS.add(" , %");
+ headerXLS.add("Все таможенные процедуры за неделю");
+ headerXLS.add("ТУВ за неделю");
+ headerXLS.add("Доля ТУВ за неделю, %");
HSSFWorkbook workbook =new HSSFWorkbook();
- HSSFSheet worksheet =workbook.createSheet("0006-");
+ HSSFSheet worksheet =workbook.createSheet("0006-Р");
for (int i=0;i<31;i++){
worksheet.setColumnWidth(i,10*256);
@@ -87,10 +87,10 @@ public boolean createReport(ResultSet result) {
0,
3
));
- cell_header.setCellValue(" : " + startDate + " " + finishDate+".");
+ cell_header.setCellValue("Отчетный период: с " + getProperty("date1") + " по " + getProperty("date2")+".");
Row row=worksheet.createRow(1);
/*Creating of header*/
- //
+ // Создаем стиль ячейки для заголовка таблицы
HSSFCellStyle style = workbook.createCellStyle();
style.setWrapText(true);
@@ -104,6 +104,7 @@ public boolean createReport(ResultSet result) {
style.setRotation((short) 90);
createHeader(headerXLS,worksheet,style,1);
+
insertData(result,worksheet,2);
flag=createFile(workbook);
return flag;
diff --git a/src/main/java/Reports/IssueSpeed.java b/src/main/java/Reports/IssueSpeed.java
index 71161b0..6b47f5c 100644
--- a/src/main/java/Reports/IssueSpeed.java
+++ b/src/main/java/Reports/IssueSpeed.java
@@ -136,7 +136,7 @@ public boolean createReport(ResultSet result) {
0,
17
));
- cell_header6.setCellValue("Отчет о сроках принятия решений о выпуске/отказе в выпуске товаров с " +startDate+" по " + finishDate+".");
+ cell_header6.setCellValue("Отчет о сроках принятия решений о выпуске/отказе в выпуске товаров с " +getProperty("date1")+" по " + getProperty("date2")+".");
style2.cloneStyleFrom(style);
style2.setRotation((short) 0);
cell_header6.setCellStyle(style2);
diff --git a/src/main/java/Reports/NSHS.java b/src/main/java/Reports/NSHS.java
new file mode 100644
index 0000000..950b4f7
--- /dev/null
+++ b/src/main/java/Reports/NSHS.java
@@ -0,0 +1,89 @@
+package Reports;
+
+import Reports.AbstratReports.AbstractExcelReport;
+import Utilz.SqlExecutor;
+import Utilz.SqlProperties;
+import org.apache.poi.hssf.usermodel.HSSFCellStyle;
+import org.apache.poi.hssf.usermodel.HSSFFont;
+import org.apache.poi.hssf.usermodel.HSSFSheet;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.List;
+
+public class NSHS extends AbstractExcelReport {
+ private String currentDate;
+ private String startDate;
+ private String finishDate;
+
+ public NSHS(SqlProperties sqlprop, SqlExecutor sqlExecutor) {
+ super(sqlprop,sqlExecutor);
+ Calendar c =new GregorianCalendar();
+ currentDate=c.get(Calendar.DAY_OF_MONTH)+"_"+c.get(Calendar.MONTH)+"_"+c.get(Calendar.YEAR);
+ }
+
+ @Override
+ public boolean createReport(ResultSet result) {
+ List headerXLS = new ArrayList();
+ headerXLS.add("№ п/п");
+ headerXLS.add("Код ТО");
+ headerXLS.add("Дата");
+ headerXLS.add("Номер");
+ headerXLS.add("Время регистрации ДТ");
+ headerXLS.add("Дата выпуска товаров");
+ headerXLS.add("Время выпуска товаров");
+ headerXLS.add("Время на выпуск товаров");
+ headerXLS.add("Обоснование превышения срока, установленного пп. 1, 3 ст. 119 ТК ЕАЭС");
+
+ HSSFWorkbook workbook =new HSSFWorkbook();
+ HSSFSheet worksheet =workbook.createSheet("0007-р");
+ for (int i=0;i<31;i++){
+ worksheet.setColumnWidth(i,10*256);
+ }
+
+ try {
+ result.last();
+ result.beforeFirst();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+
+
+ Row preRow=worksheet.createRow(0);
+ Cell cell_header = preRow.createCell(0,CellType.STRING);
+ worksheet.addMergedRegion(new CellRangeAddress(
+ 0,
+ 0,
+ 0,
+ 3
+ ));
+ cell_header.setCellValue("Отчетный период: с " + getProperty("date1") + " по " + getProperty("date2")+".");
+
+ Row row=worksheet.createRow(1);
+ /*Creating of header*/
+ // Создаем стиль ячейки для заголовка таблицы
+ HSSFCellStyle style = workbook.createCellStyle();
+
+ style.setWrapText(true);
+ style.setAlignment (HorizontalAlignment.CENTER);
+ style.setVerticalAlignment(VerticalAlignment.CENTER);
+ HSSFFont fontHeader = workbook.createFont();
+ fontHeader.setFontName("Times New Roman");
+ fontHeader.setFontHeightInPoints((short)12);
+ fontHeader.setBold (true);
+ style.setFont(fontHeader);
+ style.setRotation((short) 90);
+ createHeader(headerXLS,worksheet,style,1);
+ insertData(result,worksheet,3);
+ createFile(workbook);
+ return true;
+ }
+
+
+}
diff --git a/src/main/java/Reports/OktsOilReport.java b/src/main/java/Reports/OktsOilReport.java
index c2ee279..866c587 100644
--- a/src/main/java/Reports/OktsOilReport.java
+++ b/src/main/java/Reports/OktsOilReport.java
@@ -1,6 +1,7 @@
package Reports;
import Reports.AbstratReports.AbstractExcelReport;
+import Utilz.Printer;
import Utilz.SqlExecutor;
import Utilz.SqlProperties;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
@@ -24,12 +25,12 @@ public OktsOilReport(SqlProperties props, SqlExecutor sqlExecutor) {
public boolean createReport(ResultSet result) {
boolean flag=false;
List headerXLS = new ArrayList();
- headerXLS.add(" /");
- headerXLS.add(" ");
- headerXLS.add("ҹ");
- headerXLS.add(" ");
- headerXLS.add("");
- headerXLS.add(" ");
+ headerXLS.add("№ п/п");
+ headerXLS.add("Код ТНВЭД");
+ headerXLS.add("ДТ№");
+ headerXLS.add("№ товара");
+ headerXLS.add("ИТС");
+ headerXLS.add("Вес нетто");
HSSFWorkbook workbook =new HSSFWorkbook();
HSSFSheet worksheet =workbook.createSheet("OilReport");
@@ -44,7 +45,7 @@ public boolean createReport(ResultSet result) {
Row row=worksheet.createRow(0);
/*Creating of header*/
- //
+ // Создаем стиль ячейки для заголовка таблицы
HSSFCellStyle style = workbook.createCellStyle();
style.setWrapText(true);
@@ -79,7 +80,7 @@ private int createRows(ResultSet result, HSSFSheet worksheet, int rowNum, String
Double summ=0.0;
int numLine=1;
boolean flag = false;
- // 2710198400
+ //Записи и итоговая строчка для 2710198400
try {
while (result.next()) {
Row dataRow = worksheet.createRow(rownum);
@@ -109,7 +110,7 @@ private int createRows(ResultSet result, HSSFSheet worksheet, int rowNum, String
}
- //
+ //Считаем сумму для строчки итого если были записи
if (rownum!=rowNum) {
Row conclusionRow = worksheet.createRow(rownum);
Cell conclusionCell = conclusionRow.createCell(0, CellType.STRING);
@@ -119,13 +120,13 @@ private int createRows(ResultSet result, HSSFSheet worksheet, int rowNum, String
0,
4
));
- conclusionCell.setCellValue(" :");
+ conclusionCell.setCellValue("Итого вес нетто:");
Cell summCell = conclusionRow.createCell(5, CellType.STRING);
summCell.setCellValue(summ);
}
result.beforeFirst();
} catch (SQLException e) {
- e.printStackTrace();
+ Printer.printLog(e);
}
return rownum;
diff --git a/src/main/java/Reports/RegularMonitor.java b/src/main/java/Reports/RegularMonitor.java
index 8d7f0c0..6196daf 100644
--- a/src/main/java/Reports/RegularMonitor.java
+++ b/src/main/java/Reports/RegularMonitor.java
@@ -22,7 +22,7 @@ public class RegularMonitor extends AbstractReport {
public RegularMonitor(SqlProperties props, SqlExecutor sqlExecutor) {
super(props, sqlExecutor);
this.description = props.getProperty("description");
- Printer.printRowToMonitor("Конструктор RegularMonitor: cтартуем поток " + description + ", сервер подключения: " + getProperty("server"));
+ Printer.printLog("Thread starting " + description + ", server: " + getProperty("server") + " (Constructor of RegularMonitor)");
}
@Override
@@ -31,183 +31,36 @@ public boolean createReport() {
Calendar c = new GregorianCalendar();
String sCurrentDateTime = c.get(Calendar.DATE) + "." + (c.get(Calendar.MONTH) + 1) + "." + c.get(Calendar.YEAR) + " " +
c.get(Calendar.HOUR_OF_DAY) + ":" + c.get(Calendar.MINUTE) + ":" + c.get(Calendar.SECOND);
- Printer.printRowToMonitor(sCurrentDateTime);
ResultSet result = executeSqlClause(getProperty("sql"));
if (result == null) {
- Printer.printRowToMonitor(description + " selection returns null " + sCurrentDateTime);
+ Printer.printLog(description + " selection returns null " + sCurrentDateTime);
return false;
}
- Printer.saveResult(getProperty("description"),null);
-
try {
result.last();
if (result.getRow() == 0) {
- Printer.saveResult(getProperty("description"),new StringBuilder("empty selection"));
+ Printer.saveResult(getProperty("description"),new StringBuilder("empty selection\r\n"));
return true;
}
- } catch (SQLException e) {
- e.printStackTrace();
- flag=false;
- }
StringBuilder resultSB = new StringBuilder();
- try {
- result.beforeFirst();
- while (result.next()) {
- for (int i = 1; i <= result.getMetaData().getColumnCount(); i++) {
- resultSB.append(result.getString(i) + " : ");
- }
- resultSB.append("\r\n");
- }
- Printer.saveResult(getProperty("description"),resultSB);
- Printer.printLineToMonitor(resultSB.toString());
+ result.beforeFirst();
+ while (result.next()) {
+ for (int i = 1; i <= result.getMetaData().getColumnCount(); i++) {
+ resultSB.append(result.getString(i) + " : ");
+ }
+ resultSB.append("\r\n");
+ }
+ Printer.saveResult(getProperty("description"),resultSB);
+ Printer.printLineToMonitor(resultSB.toString());
} catch (SQLException e) {
- e.printStackTrace();
+ Printer.printLog(e);
flag=false;
}
closeConnection(result);
- //getProps().updateTimeToStart();
return flag;
}
-
-
-
-
-
-
-
-
-
-
-
- /* @Override
- public boolean createReport1() {
- boolean flag=true;
- Calendar c = new GregorianCalendar();
- String sCurrentDate = c.get(Calendar.DATE) + "." + (c.get(Calendar.MONTH) + 1) + "." + c.get(Calendar.YEAR);
- String sCurrentDateTime = c.get(Calendar.DATE) + "." + (c.get(Calendar.MONTH) + 1) + "." + c.get(Calendar.YEAR) + " " +
- c.get(Calendar.HOUR_OF_DAY) + ":" + c.get(Calendar.MINUTE) + ":" + c.get(Calendar.SECOND);
- Printer.printRowToMonitor(sCurrentDateTime);
- ResultSet result = executeSqlClause(getProperty("sql"));
- if (result == null) {
- Printer.printRowToMonitor(description + " selection returns null " + sCurrentDateTime);
- return false;
- }
- Path path = Paths.get(BaseConstants.getPath() + "\\" + sCurrentDate + ".txt");
- if (!Files.exists(path)) {
- try {
- Files.createFile(path);
- } catch (IOException e) {
- e.printStackTrace();
- flag=false;
- }
- }
- try {
- result.last();
- if (result.getRow() == 0) {
-
- Printer.printRowToMonitor(description + " empty selection " + sCurrentDateTime);
- Files.write(path, (description + " empty selection " + sCurrentDate + "\r\n").getBytes("windows-1251"), StandardOpenOption.APPEND);
- Files.write(path, ("-------------------------------------\r\n").getBytes("windows-1251"), StandardOpenOption.APPEND);
- return true;
- }
- } catch (SQLException e) {
- e.printStackTrace();
- flag=false;
- } catch (IOException e) {
- e.printStackTrace();
- flag=false;
- }
- StringBuilder resultSB = new StringBuilder();
- try {
- result.beforeFirst();
- Files.write(path, (description + " " + sCurrentDateTime + "\r\n").getBytes("windows-1251"), StandardOpenOption.APPEND);
- resultSB.append("----------" + Thread.currentThread().getName() + " start printing " + sCurrentDateTime + "----------------\r\n");
- while (result.next()) {
- for (int i = 1; i <= result.getMetaData().getColumnCount(); i++) {
- resultSB.append(result.getString(i) + " : ");
- }
- resultSB.append("\r\n");
- }
- resultSB.append("----------" + Thread.currentThread().getName() + " finished printing----------------\r\n");
-
- Files.write(path, resultSB.toString().getBytes(), StandardOpenOption.APPEND);
- Printer.printLineToMonitor(resultSB.toString());
- } catch (SQLException e) {
- e.printStackTrace();
- flag=false;
- } catch (IOException e) {
- e.printStackTrace();
- flag=false;
- }
- closeConnection(result);
- //getProps().updateTimeToStart();
- return flag;
- }*/
- /* public boolean createReport1() {
- boolean flag=true;
- Calendar c = new GregorianCalendar();
- String sCurrentDate = c.get(Calendar.DATE) + "." + (c.get(Calendar.MONTH) + 1) + "." + c.get(Calendar.YEAR);
- String sCurrentDateTime = c.get(Calendar.DATE) + "." + (c.get(Calendar.MONTH) + 1) + "." + c.get(Calendar.YEAR) + " " +
- c.get(Calendar.HOUR_OF_DAY) + ":" + c.get(Calendar.MINUTE) + ":" + c.get(Calendar.SECOND);
- Printer.printRowToMonitor(sCurrentDateTime);
- ResultSet result = executeSqlClause(getProperty("sql"));
- if (result == null) {
- Printer.printRowToMonitor(description + " selection returns null " + sCurrentDateTime);
- return false;
- }
- Path path = Paths.get(BaseConstants.getPath() + "\\" + sCurrentDate + ".txt");
- if (!Files.exists(path)) {
- try {
- Files.createFile(path);
- } catch (IOException e) {
- e.printStackTrace();
- flag=false;
- }
- }
- try {
- result.last();
- if (result.getRow() == 0) {
-
- Printer.printRowToMonitor(description + " empty selection " + sCurrentDateTime);
- Files.write(path, (description + " empty selection " + sCurrentDate + "\r\n").getBytes("windows-1251"), StandardOpenOption.APPEND);
- Files.write(path, ("-------------------------------------\r\n").getBytes("windows-1251"), StandardOpenOption.APPEND);
- return true;
- }
- } catch (SQLException e) {
- e.printStackTrace();
- flag=false;
- } catch (IOException e) {
- e.printStackTrace();
- flag=false;
- }
- StringBuilder resultSB = new StringBuilder();
- try {
- result.beforeFirst();
- Files.write(path, (description + " " + sCurrentDateTime + "\r\n").getBytes("windows-1251"), StandardOpenOption.APPEND);
- resultSB.append("----------" + Thread.currentThread().getName() + " start printing " + sCurrentDateTime + "----------------\r\n");
- while (result.next()) {
- for (int i = 1; i <= result.getMetaData().getColumnCount(); i++) {
- resultSB.append(result.getString(i) + " : ");
- }
- resultSB.append("\r\n");
- }
- resultSB.append("----------" + Thread.currentThread().getName() + " finished printing----------------\r\n");
-
- Files.write(path, resultSB.toString().getBytes(), StandardOpenOption.APPEND);
- Printer.printLineToMonitor(resultSB.toString());
- } catch (SQLException e) {
- e.printStackTrace();
- flag=false;
- } catch (IOException e) {
- e.printStackTrace();
- flag=false;
- }
- closeConnection(result);
- //getProps().updateTimeToStart();
- return flag;
- }*/
}
\ No newline at end of file
diff --git a/src/main/java/Reports/ReportFactory.java b/src/main/java/Reports/ReportFactory.java
index 1218e7e..081e746 100644
--- a/src/main/java/Reports/ReportFactory.java
+++ b/src/main/java/Reports/ReportFactory.java
@@ -2,12 +2,15 @@
import Reports.AbstratReports.Report;
import Utilz.BaseConstants;
+import Utilz.Printer;
import Utilz.SqlExecutor;
import Utilz.SqlProperties;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
+import static Utilz.Printer.printRowToMonitor;
+
public class ReportFactory {
public static Report create (SqlProperties prop, SqlExecutor sqlExecutor) {
Report report=null;
@@ -17,23 +20,23 @@ public static Report create (SqlProperties prop, SqlExecutor sqlExecutor) {
report = (Report)c.newInstance(prop,sqlExecutor);
report.addProperty("path", prop.getProperty("excel"));
} catch (InstantiationException e) {
- e.printStackTrace();
+ Printer.printLog(e);
} catch (IllegalAccessException e) {
- e.printStackTrace();
+ Printer.printLog(e);
} catch (ClassNotFoundException e) {
- System.out.println("Класс не существует");
- e.printStackTrace();
+ Printer.printLog("Class not found!!! (report factory)");
+ Printer.printLog(e);
} catch (NoSuchMethodException e) {
- e.printStackTrace();
+ Printer.printLog(e);
} catch (InvocationTargetException e) {
- e.printStackTrace();
+ Printer.printLog(e);
}
+
}
else {
report = new RegularMonitor(prop, sqlExecutor);
report.addProperty("path", BaseConstants.getPath());
- };
- //report.setIntervalDate(prop.getProperty("date1"), prop.getProperty("date2"));
+ }
return report;
}
}
diff --git a/src/main/java/Reports/Table.java b/src/main/java/Reports/Table.java
index 6c31033..e645f9b 100644
--- a/src/main/java/Reports/Table.java
+++ b/src/main/java/Reports/Table.java
@@ -1,13 +1,18 @@
package Reports;
+import Utilz.Printer;
+
import java.sql.ResultSet;
import java.sql.SQLException;
+import static Utilz.Printer.printLineToMonitor;
+import static Utilz.Printer.printRowToMonitor;
+
public class Table {
private String [][] matrix ;
/*
-*
+* Конструктор копирует результаты запроса в двумерный массив
* */
public Table(ResultSet resultSet) {
if (resultSet == null) return;
@@ -28,8 +33,8 @@ public Table(ResultSet resultSet) {
}
resultSet.beforeFirst();
}catch (SQLException e) {
- e.printStackTrace();
- }
+ Printer.printLog(e);
+ }
}
public void transposeTable (){
String [][]rotatedMatrix = new String [matrix[0].length][matrix.length];
@@ -46,9 +51,9 @@ public void printMatrix (){
if (matrix==null) return;
for (int i=0;i statusmap = new HashMap<>();
@@ -29,7 +35,11 @@ public class View1 {
private static int counter;
public static void main(String[] args){
- JFrame frame= new JFrame ("FRAME");
+
+ JFrame frame0= new StartUpWindow("");
+ frame0.setVisible(true);
+
+ /* JFrame frame= new JFrame ("FRAME");
frame.setSize(new Dimension(600,400));
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
@@ -42,9 +52,9 @@ public static void main(String[] args){
GridBagConstraints.NORTH,GridBagConstraints.BOTH,
new Insets(1,1,1,1),0,0));
initWorkingPool(false);
- ppt.init(statusmap);
+ // ppt.init(statusmap);
frame.setVisible(true);
- frame.pack();
+ frame.pack();*/
}
@@ -52,11 +62,11 @@ private void test1 (){
try {
readZipFile();
} catch (ZipException e) {
- e.printStackTrace();
+ e.printStackTrace(); Printer.saveLogFile(e); ;
}
printMap();
initWorkingPool(false);
- System.out.println("--------------------");
+ Printer.printLog("--------------------");
printMap();
SwingUtilities.invokeLater(new Runnable() {
@Override
@@ -72,25 +82,13 @@ public void run() {
try {
Thread.sleep (1000);
} catch (InterruptedException e) {
- e.printStackTrace();
+ e.printStackTrace(); Printer.saveLogFile(e); ;
}
//frame.getProccessesPanel().updateProccessList();
}
private static void initWorkingPool(boolean isEncrypted){
- try {
- if (isEncrypted) {
- readZipFile();
- } else {
- readFolderSql();
- }
- } catch (ZipException e) {
- e.printStackTrace();
- System.out.println("File " + BaseConstants.getInstance().getZipFileSQL() + " generated I/O exception!");
- } catch (IOException e) {
- e.printStackTrace();
- System.out.println("Folder " + BaseConstants.getInstance().getPathSQL() + " generated I/O exception!");
- }
+ Controller.init(isEncrypted);
}
private static void readFolderSql() throws IOException {
@@ -117,10 +115,10 @@ private static void readZipFile () throws ZipException {
}
List headers =zipFile.getFileHeaders();
for (FileHeader fh:headers) {
- System.out.println("Entry: " + fh.getFileName());
+ printRowToMonitor("Entry: " + fh.getFileName());
if (!fh.isDirectory() && fh.getFileName().endsWith(".rep")) {
SqlProperties prop = new SqlProperties(true);
- prop.loadFromFile(new InputStreamReader(zipFile.getInputStream(fh)),fh.getFileName());
+ prop.loadFromFile(new InputStreamReader(zipFile.getInputStream(fh), Charset.forName("UTF-8")),fh.getFileName());
statusmap.put(prop,false);
}
}
@@ -128,9 +126,9 @@ private static void readZipFile () throws ZipException {
private static void printMap(){
for (HashMap.Entry pair:
statusmap.entrySet()) {
- System.out.println( "-------------------->>>>");
- System.out.println( pair.getKey().getProperty("description"));
- System.out.println( pair.getKey().getProperty("sql"));
+ printRowToMonitor( "-------------------->>>>");
+ printRowToMonitor( pair.getKey().getProperty("description"));
+ printRowToMonitor( pair.getKey().getProperty("sql"));
}
}
}
diff --git a/src/main/java/Utilz/BaseConstants.java b/src/main/java/Utilz/BaseConstants.java
index 066beea..b8ec025 100644
--- a/src/main/java/Utilz/BaseConstants.java
+++ b/src/main/java/Utilz/BaseConstants.java
@@ -1,49 +1,74 @@
package Utilz;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
+import java.io.*;
+import java.nio.charset.Charset;
+import java.util.*;
public class BaseConstants {
/*Initinalizating parameters*/
- private final static String startFile = "c:\\Java\\monitor.ini";
+ public final static String startFile = "c:\\Java\\monitor.ini";
private static String path = "C:\\Java\\";
- private String pathSQL = "C:\\Java\\SQL\\";
+ private String pathSQL ;
private String zipFileSQL = "C:\\Java\\SQL.zip";
private String localExcelReportPath = "C:\\RegularReports\\";
- private String zipPsw = "123";
+ private static String liesencePath="C:\\Java\\SQL\\liesence.txt";
+ public final static String logFile = "C:\\Java";
+
+ public static String getLiesencePath() {
+ return liesencePath;
+ }
+
+ public static void setLiesencePath(String liesencePath) {
+ BaseConstants.liesencePath = liesencePath;
+ }
+
+ private String zipPsw = "albmonitor";
+ public final static int MAX_COUNT_THREADS=5;
public static Map getDbase() {
return dbase;
}
- private static Map dbase = new HashMap();
+ private static Map dbase = new HashMap<>();
private static BaseConstants baseConstants = null;
private static boolean isZip =false;
- private BaseConstants() {
+ private BaseConstants() throws IOException {
Properties startProps = new Properties();
- try {
- startProps.load(new FileInputStream(new File(startFile)));
- } catch (IOException e) {
- e.printStackTrace();
- }
+ startProps.load(new InputStreamReader(new FileInputStream(new File(startFile)), Charset.forName("UTF-8")));
+
// String path, String pathSQL, String cat, String log, String psw
path = startProps.getProperty("path");
pathSQL = startProps.getProperty("pathSQL");
isZip = Boolean.valueOf(startProps.getProperty("isZip").trim());
+ zipFileSQL=startProps.getProperty("map")==null?zipFileSQL:startProps.getProperty("map");
dbase.put("SZATP",new DBConnection("post190","post190", "jdbc:oracle:thin:@10.37.0.7:1521:SZATP"));
dbase.put("CAT",new DBConnection("okts","okts", "jdbc:oracle:thin:@10.37.12.20:1521/WH01"));
+ dbase.put("CAT1",new DBConnection("opsur","opsur", "jdbc:oracle:thin:@10.37.12.20:1521/WH01"));
dbase.put("HOME",new DBConnection("test","test", "jdbc:oracle:thin:@localhost:1521:orcle"));
dbase.put("HOME1",new DBConnection("test","test", "jdbc:oracle:thin:@localhost:1521:orcle"));
+ List keys = new ArrayList(startProps.keySet());
+ for (String key:keys ) {
+ if (key.startsWith("BD_")){
+ String [] arr = String.valueOf(startProps.get(key)).split("_");
+ dbase.put (key.substring(3),
+ new DBConnection(arr[0],arr[1],arr[2])
+ );
+
+ }
+ }
}
public static synchronized BaseConstants getInstance(){
- if (baseConstants ==null) baseConstants =new BaseConstants();
+ if (baseConstants ==null) {
+ try {
+ baseConstants =new BaseConstants();
+ } catch (IOException e) {
+ Printer.printLog(e);
+ return null;
+ }
+ }
return baseConstants;
}
diff --git a/src/main/java/Utilz/ConnectorToOracle.java b/src/main/java/Utilz/ConnectorToOracle.java
index 72d5d07..69bee6a 100644
--- a/src/main/java/Utilz/ConnectorToOracle.java
+++ b/src/main/java/Utilz/ConnectorToOracle.java
@@ -5,6 +5,7 @@
import java.sql.SQLException;
import java.util.HashMap;
+import static Utilz.Printer.printRowToMonitor;
import static java.lang.Thread.sleep;
public class ConnectorToOracle {
@@ -30,33 +31,31 @@ public static ConnectorToOracle getInstance() {
}
}
- public Connection getConnection (String server) {
+ public Connection getConnection (String server) throws SQLException {
synchronized (ConnectorToOracle.class){
Integer num = counterConections.get(server);
- Connection con;
- if (num != null && num != 0) {
+
+
+ if (num != null && num != 0 && !conections.get(server).isClosed()) {
num++;
- } else {
- try {
- DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
- con = DriverManager.getConnection(
+ counterConections.put(server, num);
+ Printer.printLog("Count of connections for " + server + " is: " +counterConections.get(server));
+ return conections.get(server);
+ }
+ num=0;
+ counterConections.put(server, num);
+ DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
+ Connection con = DriverManager.getConnection(
BaseConstants.getInstance().getConnectionString(server),
BaseConstants.getInstance().getLog(server),
BaseConstants.getInstance().getPsw(server));
- Printer.printRowToMonitor("Connected Successfully to Oracle instance " + server);
- conections.put(server, con);
- num = 1;
- } catch (SQLException e) {
- Printer.printRowToMonitor("Error when connect to Oracle instance " + server);
- e.printStackTrace();
- }
- finally {
-
- }
- }
+ Printer.printLog("Connected Successfully to Oracle instance " + server);
+ conections.put(server, con);
+ num++;
counterConections.put(server, num);
+ Printer.printLog("Count of connections for " + server + " is first: " +counterConections.get(server));
return conections.get(server);
- }
+ }
}
public boolean closeConnection (String server){
@@ -69,7 +68,7 @@ public boolean closeConnection (String server){
conections.get(server).close();
return true;
} catch (SQLException e) {
- e.printStackTrace();
+ Printer.printLog(e);
return false;
}
}
diff --git a/src/main/java/Utilz/Desipher.java b/src/main/java/Utilz/Desipher.java
deleted file mode 100644
index 5200f38..0000000
--- a/src/main/java/Utilz/Desipher.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package Utilz;
-
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-
-public class Desipher {
- public static String decodeData(String s){
- String decodedData = s.substring(s.length()-1,s.length()) +
- s.substring(0,s.length()-1);
- String [] dataParts =decodedData.split("x");
- try {
- int year_1 = Integer.parseInt(dataParts[0], 16);
- int month_1 = Integer.parseInt(dataParts[1], 16);
- int day_1 = Integer.parseInt(dataParts[2], 16);
- Calendar c = new GregorianCalendar(year_1, month_1 - 1, day_1);
- SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy");
- String currentDate = formatter.format(c.getTime());
- return currentDate;
- }
- catch (NumberFormatException e){
- return null;
- }
-
- }
-
- public static String encodeData(String s){
- StringBuilder data= new StringBuilder(s);
- Calendar c= new GregorianCalendar();
- c.set(
- Integer.valueOf(data.substring(6,10)),
- Integer.valueOf(data.substring(3,5)),
- Integer.valueOf(data.substring(0,2))
- );
- int year = c.get(Calendar.YEAR);
- int month = c.get (Calendar.MONTH);
- int day = c.get (Calendar.DAY_OF_MONTH);
- String offsetedData = Integer.toString(year,16) +'x' +Integer.toString(month,16) +'x' + Integer.toString(day,16);
- offsetedData = offsetedData.substring(1,offsetedData.length()) + offsetedData.substring(0,1);
- return offsetedData;
- }
-
-}
diff --git a/src/main/java/Utilz/Printer.java b/src/main/java/Utilz/Printer.java
index cc6c843..0cc760d 100644
--- a/src/main/java/Utilz/Printer.java
+++ b/src/main/java/Utilz/Printer.java
@@ -1,8 +1,8 @@
package Utilz;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
+import java.io.*;
+import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -16,22 +16,80 @@
public class Printer {
private static ConcurrentMap results=new ConcurrentHashMap();
+ private final static Object lock = new Object();
+
+ public static void saveLogFile(Exception e){
+ synchronized (lock){
+ Path path = Paths.get (getLogFile());
+ if (!Files.exists(path)&!Files.isDirectory(path)) {
+ try {
+ Files.createFile(path);
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ }
+ }
+ File file = new File (getLogFile());
+ try (PrintWriter pw = new PrintWriter(new FileWriter(file,true), true)) {
+ e.printStackTrace(pw);
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ }
+ lock.notifyAll();
+ }
- public static void printRowToMonitor(String text){
- try {
- String utfString = new String (text.getBytes("windows-1251"));
- System.out.println(utfString);
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
+ }
+
+ private static String getLogFile() {
+ return BaseConstants.logFile + "\\"+StringUtilz.toString(Calendar.getInstance()).replace("/","_") + "_logReporer.txt";
+ }
+
+ private static void saveLogFile(String text){
+ synchronized (lock) {
+ System.out.println(getLogFile());
+ Path path = Paths.get(getLogFile());
+ if (!Files.exists(path)&!Files.isDirectory(path)) {
+ try {
+ Files.createFile(path);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ try (FileWriter fw = new FileWriter(path.toString(), true)) {
+ fw.write(text + "\r\n");
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ lock.notifyAll();
}
+ }
+ public synchronized static void printLog(String text){
+ saveLogFile(text);
+ System.out.println(text);
+ }
+ public synchronized static void printLog(Exception e){
+ saveLogFile(e);
+ e.printStackTrace();
+ }
+
+ public synchronized static void printRowToMonitor(String text){
+ System.out.println(text);
+ //saveLogFile(text);
}
public synchronized static void printLineToMonitor(String text){
- System.out.print(text);
+ System.out.println(text);
+ //saveLogFile(text);
}
public synchronized static void saveResult(String description, StringBuilder result){
- if (result==null || description==null) return;
+ if (result==null || description==null) {
+ return;
+ }
+ /*optimizating section*/
+ else if (results.get(description)!=null&&results.get(description).getResult().equals(result)){
+ return;
+ }
results.put(description,new ResultTable(result, new GregorianCalendar()));
saveMaptoFile();
}
@@ -53,25 +111,37 @@ private synchronized static boolean saveMaptoFile(){
for (ConcurrentMap.Entry pair:
results.entrySet()) {
- sb.append("\n\r");
- sb.append("--------------------------------");
- sb.append(pair.getKey());
- sb.append(' ');
- sb.append(pair.getValue().getDateTime());
- sb.append("-----------------------------------\r\n");
-
+ sb.append("\r\n");
+ StringBuilder header = new StringBuilder();
+ header.append("--------------------------------");
+ header.append(pair.getKey());
+ header.append(' ');
+ header.append(pair.getValue().getDateTime());
+ header.append("-----------------------------------\r\n");
+
+ sb.append(header);
sb.append(pair.getValue().getResult());
+ String closingHeader = StringUtilz.alignStringAfter("--------------------------------" +pair.getKey(),
+ header.length()-2,"-");
+ sb.append(closingHeader);
+ sb.append("\r\n\r\n\r\n");
+ }
+/*
+ try(FileOutputStream fos = new FileOutputStream(BaseConstants.getPath() + "\\" + sCurrentDate + ".txt","UTF-8"){
+ //fout.write("");
+ String secondString = new String(sb.toString().getBytes("windows-1251"),"UTF-8");
+ while (fos.)
- sb.append("--------------------------------");
- sb.append(pair.getKey());
- sb.append("-----------------------------------\r\n");
- sb.append("\n\r");
+ fout.write (secondString);
}
+ catch (IOException e) {
+ e.printStackTrace(); ;
+ }*/
try {
Files.write(path,
(sb.toString()).getBytes("windows-1251"),
- StandardOpenOption.WRITE);
+ StandardOpenOption.TRUNCATE_EXISTING);
} catch (IOException e) {
e.printStackTrace();
return false;
@@ -80,7 +150,7 @@ private synchronized static boolean saveMaptoFile(){
}
public static List getResults(String description) {
- List temp = new ArrayList();
+ List temp = new ArrayList<>();
if (results==null||results.get(description)==null) {
temp.add(new StringBuilder());
temp.add(new StringBuilder());
@@ -99,12 +169,14 @@ private static class ResultTable {
public ResultTable(StringBuilder result, Calendar c) {
this.result=result;
dateTime=toStringBulder(c);
+
+
}
private StringBuilder toStringBulder(Calendar c) {
StringBuilder result= new StringBuilder();
- result.append(align(c.get(Calendar.HOUR)));
+ result.append(align(c.get(Calendar.HOUR_OF_DAY)));
result.append(':');
result.append(align(c.get(Calendar.MINUTE)));
result.append(':');
@@ -112,7 +184,7 @@ private StringBuilder toStringBulder(Calendar c) {
result.append(' ');
result.append(align(c.get(Calendar.DAY_OF_MONTH)));
result.append('.');
- result.append(align(c.get(Calendar.MONTH)));
+ result.append(align(c.get(Calendar.MONTH)+1));
result.append('.');
result.append(align(c.get(Calendar.YEAR)));
return result;
diff --git a/src/main/java/Utilz/SqlExecutor.java b/src/main/java/Utilz/SqlExecutor.java
index cc19d67..c73eed7 100644
--- a/src/main/java/Utilz/SqlExecutor.java
+++ b/src/main/java/Utilz/SqlExecutor.java
@@ -2,61 +2,87 @@
import Reports.AbstratReports.AbstractReport;
+import Reports.AbstratReports.Report;
import Reports.ReportFactory;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
import java.util.concurrent.PriorityBlockingQueue;
public class SqlExecutor extends Thread{
private static PriorityBlockingQueue waitingQueue;
- private Map workingPool=new LinkedHashMap<>();
+ private final Object lock = new Object();
+
+ //ExecutorService service = Executors.newFixedThreadPool(BaseConstants.MAX_COUNT_THREADS);
+ HashMap services = new HashMap<>();
+ //private Map workingPool=new LinkedHashMap<>();
+
public SqlExecutor(PriorityBlockingQueue queue) {
- this.waitingQueue=queue;
- for (SqlProperties prop:waitingQueue) {
- workingPool.put(prop,false);
- prop.addProperty("timeStampLastExecution", getCurrentDateTime());
- prop.addProperty("asleeptime", String.valueOf(prop.calcSleepingTime()));
- }
+ SqlExecutor.waitingQueue=queue;
+ /* for (SqlProperties prop:waitingQueue) {
+ // workingPool.put(prop,false);
+ *//* prop.addProperty("timeStampLastExecution", getCurrentDateTime());
+ prop.addProperty("asleeptime", String.valueOf(prop.calcSleepingTime()));*//*
+ }*/
}
@Override
public void run() {
- while (true){
- if (waitingQueue.size()>0) {
- SqlProperties sqlProp = waitingQueue.peek();
- long period = sqlProp.calcSleepingTime();
- sqlProp.addProperty("asleeptime", String.valueOf(period));
- if (period == 0) {
- waitingQueue.remove(sqlProp);
- ReportFactory.create(sqlProp, this);
- workingPool.put(sqlProp,true);
+ while (true) {
+ synchronized (lock) {
+ if (waitingQueue.size() > 0) {
+ SqlProperties sqlProp = waitingQueue.peek();
+ long period = sqlProp.calcSleepingTime();
+ //sqlProp.addProperty("asleeptime", String.valueOf(period));
+ if (period == 0 && !sqlProp.isRunning()) {
+ AbstractReport r = (AbstractReport) ReportFactory.create(sqlProp, this);
+ if (services.get(r.getProperty("server")) == null) {
+ services.put(r.getProperty("server"), Executors.newFixedThreadPool(BaseConstants.MAX_COUNT_THREADS));
+ }
+ services.get(r.getProperty("server")).submit(r);
+ //service.submit(r);
+ waitingQueue.remove(sqlProp);
+ sqlProp.setRunning(true);
+ waitingQueue.put(sqlProp);
+ }
+ else if(period > 0 && !sqlProp.isRunning()){
+ try {
+ lock.wait(period);
+ } catch (InterruptedException e) {
+ Printer.printLog(e);
+ }
+ }
+
}
+ lock.notifyAll();
}
}
}
+
public void addQueue(AbstractReport abstractReport){
- abstractReport.addProperty("timeStampLastExecution", getCurrentDateTime());
- abstractReport.addProperty("asleeptime", String.valueOf(abstractReport.getProps().calcSleepingTime()));
- waitingQueue.add(abstractReport.getProps());
- workingPool.put(abstractReport.getProps(),false);
- try {
- sleep(10000);
- } catch (InterruptedException e) {
- e.printStackTrace();
+ synchronized (lock) {
+ abstractReport.addProperty("timeStampLastExecution", getCurrentDateTime());
+ //abstractReport.addProperty("asleeptime", String.valueOf(abstractReport.getProps().calcSleepingTime()));
+ waitingQueue.remove(abstractReport.getProps());
+ abstractReport.getProps().setRunning(false);
+ waitingQueue.add(abstractReport.getProps());
+ //workingPool.put(abstractReport.getProps(),false);
+ lock.notifyAll();
}
long period = abstractReport.getSleepingTime();
- Printer.printRowToMonitor(" "+abstractReport.getProperty("description")+" " +
- String.valueOf(period / 1000 / 60 / 60 / 24) + " "
- + String.valueOf(period / 1000 / 60 / 60 % 24) + " "
- + String.valueOf(period / 1000 / 60 % 60) + " "
- + String.valueOf(period / 1000 % 60) + " "
- + String.valueOf(period %1000) + " .");
-
- }
+ Printer.printLog("Thread "+abstractReport.getProperty("description")+" sleep for " +
+ String.valueOf(period / 1000 / 60 / 60 / 24) + " days "
+ + String.valueOf(period / 1000 / 60 / 60 % 24) + " hours "
+ + String.valueOf(period / 1000 / 60 % 60) + " min "
+ + String.valueOf(period / 1000 % 60) + " sec "
+ + String.valueOf(period %1000) + " milisec.");
+ }
private String getCurrentDateTime (){
LocalDateTime date = LocalDateTime.now();
@@ -67,9 +93,4 @@ public static PriorityBlockingQueue getWaitingQueue() {
return waitingQueue;
}
- public Map getWorkingPool() {
- return workingPool;
- }
-
-
}
diff --git a/src/main/java/Utilz/SqlProperties.java b/src/main/java/Utilz/SqlProperties.java
index dd4c2c9..929c406 100644
--- a/src/main/java/Utilz/SqlProperties.java
+++ b/src/main/java/Utilz/SqlProperties.java
@@ -2,24 +2,27 @@
import net.lingala.zip4j.core.ZipFile;
import net.lingala.zip4j.exception.ZipException;
-import net.lingala.zip4j.io.ZipOutputStream;
import net.lingala.zip4j.model.FileHeader;
import net.lingala.zip4j.model.ZipParameters;;
import java.io.*;
-import java.nio.charset.StandardCharsets;
+
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
-import java.text.SimpleDateFormat;
import java.util.*;
+import static Utilz.Printer.printRowToMonitor;
-public class SqlProperties implements Comparable{
+public class SqlProperties implements Comparable{
private HashMap map = new HashMap();
private String sourceFile =null;
private Calendar startTime;
private boolean isZip;
+ private boolean isRunning;
+ private int localPeriod=0;
+ private static final Object lock = new Object();
+
//private Calendar timeToStart=null;
/*
*Reading props file with SQL query from param
@@ -28,23 +31,20 @@ public class SqlProperties implements Comparable{
public SqlProperties(boolean isZip) {
this.isZip = isZip;
+ this.isRunning=false;
+ }
+
+ public Calendar getStartTime() {
+ return startTime;
}
public void setZip(boolean zip) {
isZip = zip;
}
- public HashMap loadFromFile(InputStreamReader isr, String filePath) {
- StringBuilder stringB = getFileContextFromStream(isr);
-/* try (BufferedReader reader = new BufferedReader(isr)) {
- while (reader.ready()) {
- stringB.append(" ");
- stringB.append(reader.readLine());
- stringB.append(" ");
- }
- } catch (IOException e) {
- e.printStackTrace();
- }*/
+ public synchronized HashMap loadFromFile(InputStreamReader isr, String filePath) {
+ StringBuilder stringB = getFileContextFromStream(isr);
+
String [] params = stringB.toString().split(";");
for (int i=0;i loadFromFile(InputStreamReader isr, String filePa
parammedSql=parammedSql.replace("&&date2",map.get("date2"));
map.put("sql",parammedSql);
}
+
+ if (getProperty("period")!=null && localPeriod>0){
+ map.put("period", String.valueOf(localPeriod));
+ }
//updateTimeToStart();
map.put("sourceFile", filePath);
sourceFile=getProperty("sourceFile");
- startTime=GregorianCalendar.getInstance();
- if (getProperty("period")!=null) {
+
+ if (getProperty("date2")==null /*& getProperty("period")!=null*/) {
+ startTime=GregorianCalendar.getInstance();
addLong(startTime, Long.valueOf(getProperty("period")));
}
else {
- startTime=toCalendar(getProperty("date2"));
+
+ startTime=toCalendar(getProperty("date2")+ " 23:59:59");
}
return map;
}
public HashMap loadFromFile(File file){
- try (FileReader fileReader =new FileReader(file)){
+ //try (FileReader fileReader =new FileReader(file,"utf-8")){
+ try (InputStreamReader fileReader =new InputStreamReader(new FileInputStream(file),"utf-8")){
return loadFromFile(fileReader,file.getPath());
} catch (FileNotFoundException e) {
- e.printStackTrace();
+ Printer.printLog(e);
} catch (IOException e) {
- e.printStackTrace();
+ Printer.printLog(e);
}
return null;
}
- /* public HashMap loadFromFile(File file) {
- StringBuilder stringB = new StringBuilder();
- try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
- while (reader.ready()) {
- stringB.append (" ");
- stringB.append(reader.readLine());
- stringB.append (" ");
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- String [] params = stringB.toString().split(";");
- for (int i=0;i loadFromFile(String file) {
- File ffile = new File (file);
- sourceFile=file;
- return loadFromFile(ffile);
- }
+
/*Print map collection*/
public void printMap(){
if (map == null || map.size()==0) {
- System.out.println("Empty PropMap");
+ Printer.printLog("Empty PropMap");
return;
}
for (Map.Entry pair:
map.entrySet()) {
- System.out.println("Key: " + pair.getKey() + "; Value " + pair.getValue() );
+ printRowToMonitor("Key: " + pair.getKey() + "; Value " + pair.getValue() );
}
}
@@ -163,19 +127,12 @@ public void addProperty (String key, String value){
private void printCalendar(Calendar cdate) {
String sdate=cdate.get(Calendar.DAY_OF_MONTH)+"."+cdate.get(Calendar.MONTH)+"."+cdate.get(Calendar.YEAR);
- System.out.println(sdate);
+ printRowToMonitor(sdate);
}
public long calcSleepingTime (){
- Calendar currentMoment = new GregorianCalendar();/*текущее время*/
- long sleepingTime;
- if (getProperty("date2")==null) {
- sleepingTime = startTime.getTimeInMillis() -currentMoment.getTimeInMillis();
- }
- else {
- Calendar dateStart=toCalendar(getProperty("date2"));
- sleepingTime= dateStart.getTimeInMillis()-currentMoment.getTimeInMillis()-360000;
- }
+ Calendar currentMoment = Calendar.getInstance();/*текущее время*/
+ long sleepingTime = startTime.getTimeInMillis() -currentMoment.getTimeInMillis();
return sleepingTime <= 0 ? 0 : sleepingTime;
}
@@ -186,9 +143,11 @@ public boolean updatePeriodinFile(){
if (getProperty("period")==null){
return false;
}
+ startTime = GregorianCalendar.getInstance();
addLong(startTime, Long.valueOf (getProperty("period")));
return true;
}
+
Calendar date1= toCalendar(getProperty("date1"));
Calendar date2= toCalendar(getProperty("date2"));
switch (map.get("reportPeriod")){
@@ -202,37 +161,43 @@ public boolean updatePeriodinFile(){
break;
case "month":
date1.add(Calendar.MONTH,1);
- date1.add(Calendar.MONTH,1);
+ date2.add(Calendar.MONTH,1);
break;
}
+ //startTime=date2;
+
+ startTime=toCalendar(StringUtilz.toString(date2)+ " 23:59:59");
if (isZip) {
- return updatePropertiesZipFile("date1", toString(date1)) | updatePropertiesZipFile("date2", toString(date2));
+
+ boolean r= updatePropertiesZipFile("date2", StringUtilz.toString(date2)) & updatePropertiesZipFile("date1", StringUtilz.toString(date1));
+ return r;
}
else{
- return updatePropertiesFile("date1", toString(date1)) | updatePropertiesFile("date2", toString(date2));
+ boolean r= updatePropertiesFile("date2", StringUtilz.toString(date2)) & updatePropertiesFile("date1", StringUtilz.toString(date1));
+ return r;
}
}
public Calendar toCalendar(String sdate){
- String [] dateParts = sdate.split("\\.|/");
- if (dateParts.length!=3) return null;
- dateParts[0]=alignString(dateParts[0],2,"0");
- dateParts[1]=alignString(dateParts[1],2,"0");
- if (dateParts[2].length()==2){
- dateParts[2]=alignString(dateParts[2],4,"20");
- }
+ String [] dateParts = sdate.split("\\.|/| |:");
Calendar c = new GregorianCalendar();
- c.set(Integer.valueOf(dateParts[2]),Integer.valueOf(dateParts[1])-1,Integer.valueOf(dateParts[0]));
- //c.getTime();
-
+ if (dateParts.length!=3 & dateParts.length!=6) return null;
+ dateParts[0] = alignString(dateParts[0], 2, "0");
+ dateParts[1] = alignString(dateParts[1], 2, "0");
+ if (dateParts[2].length() == 2) {
+ dateParts[2] = alignString(dateParts[2], 4, "20");
+ }
+ c.set(Integer.valueOf(dateParts[2]), Integer.valueOf(dateParts[1]) - 1, Integer.valueOf(dateParts[0]));
+ if (dateParts.length==6){
+ c.set(Calendar.HOUR_OF_DAY,Integer.valueOf(dateParts[3]));
+ c.set(Calendar.MINUTE,Integer.valueOf(dateParts[4]));
+ c.set(Calendar.SECOND,Integer.valueOf(dateParts[5]));
+ }
+ printRowToMonitor(sdate);
+ //printRowToMonitor(c.getTime());
return c;
}
- public static String toString(Calendar cdate){
- if (cdate==null) return null;
- SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
- return format.format(cdate.getTime());
- }
/*
* Метод выравнивает длину строки знаками sign до длины строки quantitySigns
* */
@@ -247,7 +212,7 @@ protected String alignString (String object, int quantitySigns, String sign){
private boolean updatePropertiesFile(String nameProperty, String value){
//найти в файле свойство и переписать его значение и перезагрузить
- System.out.println("FileName sourceFile " + sourceFile);
+ Printer.printLog(getProperty("description") + ", updatePropertiesFile. FileName sourceFile " + sourceFile);
Path path = Paths.get(sourceFile);
try {
String contentOfFile = new String(Files.readAllBytes(path));
@@ -255,56 +220,64 @@ private boolean updatePropertiesFile(String nameProperty, String value){
Files.write(path,contentOfFile.getBytes());
map=loadFromFile(path.toFile());
} catch (IOException e) {
- e.printStackTrace();
+ Printer.printLog(e);
}
return true;
}
- private boolean updatePropertiesZipFile(String nameProperty, String value) {
- /*read source in zip file to StringBuilder*/
- String zipFilePath = BaseConstants.getInstance().getZipFileSQL();
- FileHeader fHeader=null;
- ZipFile zipFile =null;
+ private boolean updatePropertiesZipFile(String nameProperty, String value) {
+ synchronized (lock) {
+ /*read source in zip file to StringBuilder*/
+ String zipFilePath = BaseConstants.getInstance().getZipFileSQL();
+ FileHeader fHeader = null;
+ ZipFile zipFile = null;
+ try {
+ zipFile = new ZipFile(zipFilePath);
+ if (zipFile.isEncrypted()) {
+ zipFile.setPassword(BaseConstants.getInstance().getZipPsw());
+ }
+ fHeader = zipFile.getFileHeader(sourceFile);
+ } catch (ZipException e) {
+ Printer.printLog(e);
try {
- zipFile=new ZipFile(zipFilePath);
- if (zipFile.isEncrypted()){
- zipFile.setPassword(BaseConstants.getInstance().getZipPsw());
- }
- fHeader =zipFile.getFileHeader(sourceFile);
- } catch (ZipException e) {
- e.printStackTrace();
+ wait(10000);
+ } catch (InterruptedException e1) {
+ Printer.printLog(e1);
}
- StringBuilder stringB=null;
- try (InputStreamReader isr =new InputStreamReader(
- zipFile.getInputStream(fHeader),"utf-8"
+ }
+ StringBuilder stringB = null;
+ try (InputStreamReader isr = new InputStreamReader(
+ zipFile.getInputStream(fHeader), "utf-8"
)
- ) {
- isr.getEncoding();
- stringB = getFileContextFromStream(isr);
- zipFile.removeFile(fHeader);
- } catch (IOException e) {
- e.printStackTrace();
- } catch (ZipException e) {
- e.printStackTrace();
- }
- /*replace value in StringBuilder*/
- int start = stringB.indexOf(map.get(nameProperty));
- int end = start + map.get(nameProperty).length();
- stringB.replace(start,end,value);
- /*write StringBuolder to source in zip file */
- byte [] b=null;
- try (InputStream is = new ByteArrayInputStream(stringB.toString().getBytes("utf-8"))) {
- //b = stringB.toString().getBytes("UTF-8");
- ZipParameters zp = new ZipParameters();
- zp.setSourceExternalStream(true);
- zp.setFileNameInZip(sourceFile);
- zp.setPassword(BaseConstants.getInstance().getZipPsw());
- zipFile.addStream(is, zp);
- map.put(nameProperty,value);
- } catch (IOException e) {
- e.printStackTrace();
- } catch (ZipException e) {
- e.printStackTrace();
+ ) {
+ isr.getEncoding();
+ stringB = getFileContextFromStream(isr);
+ zipFile.removeFile(fHeader);
+ } catch (IOException e) {
+ Printer.printLog(e);
+ } catch (ZipException e) {
+ Printer.printLog(e);
+ }
+ /*replace value in StringBuilder*/
+ int start = stringB.indexOf(map.get(nameProperty));
+ int end = start + map.get(nameProperty).length();
+ stringB.replace(start, end, value);
+ //map.put(nameProperty,value);
+ /*write StringBulder to source in zip file */
+ map.put(nameProperty, value);
+ byte[] b = null;
+ try (InputStream is = new ByteArrayInputStream(stringB.toString().getBytes("utf-8"))) {
+ //b = stringB.toString().getBytes("UTF-8");
+ ZipParameters zp = new ZipParameters();
+ zp.setSourceExternalStream(true);
+ zp.setFileNameInZip(sourceFile);
+ zp.setPassword(BaseConstants.getInstance().getZipPsw());
+ zipFile.addStream(is, zp);
+ //map.put(nameProperty,value);
+ } catch (IOException e) {
+ Printer.printLog(e);
+ } catch (ZipException e) {
+ Printer.printLog(e); }
}
return true;
}
@@ -321,15 +294,32 @@ private StringBuilder getFileContextFromStream(InputStreamReader isr) {
//stringB.append(" ");
}
} catch (IOException e) {
- e.printStackTrace();
+ Printer.printLog(e);
}
return stringB;
}
+ public boolean isRunning() {
+ return isRunning;
+ }
+
+ public void setRunning(boolean running) {
+ isRunning = running;
+ }
+
@Override
- public int compareTo(Object o) {
- if (calcSleepingTime() - ((SqlProperties) o).calcSleepingTime() >0) return 1;
- if (calcSleepingTime() - ((SqlProperties) o).calcSleepingTime() <=0) return -1;
+ public int compareTo(SqlProperties o) {
+ if (isRunning() & ! o.isRunning() ){
+ return 1;
+ }
+ else if (isRunning() & o.isRunning() ){
+ return 0;
+ }
+ else if (!isRunning & o.isRunning){
+ return -1;
+ }
+ if (calcSleepingTime() - o.calcSleepingTime() >0) return 1;
+ if (calcSleepingTime() - o.calcSleepingTime() <0) return -1;
return 0;
}
}
diff --git a/src/main/java/Utilz/StringCrypter.java b/src/main/java/Utilz/StringCrypter.java
new file mode 100644
index 0000000..5292623
--- /dev/null
+++ b/src/main/java/Utilz/StringCrypter.java
@@ -0,0 +1,130 @@
+package Utilz;
+// Файл StringCrypter.java
+
+import java.io.IOException;
+import org.apache.commons.codec.binary.Base64;
+import java.io.UnsupportedEncodingException;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.crypto.BadPaddingException;
+import javax.crypto.Cipher;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.NoSuchPaddingException;
+import javax.crypto.SecretKey;
+
+/**
+ * Класс для шифрования и дешифрования строк
+ * Использует библиотеку Apache Codec http://commons.apache.org/codec/
+ * @author Рудницкий Валентин
+ */
+public class StringCrypter {
+ public static void main(String[] args) {
+ StringCrypter crypter=new StringCrypter(new byte[]{1,4,5,6,8,9,7,8});
+ String testStr = "01/05/2019";
+ // шифрование
+ System.out.println( crypter.encrypt(testStr));
+ System.out.println(crypter.decrypt(crypter.encrypt(testStr)));
+
+ }
+
+ /**
+ * Упрощенный конструктор. Создает StringCrypter с ключом DESSecretKey со значением по умолчанию (не рекомендуется)
+ */
+ public StringCrypter() {
+ this(new byte[]{1,4,5,6,8,9,7,8});
+ }
+
+ /**
+ * Упрощенный конструктор. Создает StringCrypter с ключом
+ * DESSecretKey (алгоритм шифрования DES) со значением key.
+ * Ключ key должен иметь длину 8 байт
+ */
+ public StringCrypter(byte[] key) {
+ try {
+ updateSecretKey(new DESSecretKey(key));
+ } catch (InvalidKeyException | NoSuchAlgorithmException | NoSuchPaddingException ex) {
+ throw new IllegalArgumentException(ex.getMessage());
+ }
+ }
+
+ public StringCrypter(SecretKey key) throws NoSuchPaddingException,
+ NoSuchAlgorithmException,
+ InvalidKeyException {
+ updateSecretKey(key);
+ }
+
+ private void updateSecretKey(SecretKey key) throws NoSuchPaddingException,
+ NoSuchAlgorithmException,
+ InvalidKeyException {
+ ecipher = Cipher.getInstance(key.getAlgorithm());
+ dcipher = Cipher.getInstance(key.getAlgorithm());
+ ecipher.init(Cipher.ENCRYPT_MODE, key);
+ dcipher.init(Cipher.DECRYPT_MODE, key);
+ }
+
+ public static class DESSecretKey implements SecretKey {
+
+ private final byte[] key;
+
+ /**
+ * ключ должен иметь длину 8 байт
+ */
+ public DESSecretKey(byte[] key) {
+ this.key = key;
+ }
+
+ @Override
+ public String getAlgorithm() {
+ return "DES";
+ }
+
+ @Override
+ public String getFormat() {
+ return "RAW";
+ }
+
+ @Override
+ public byte[] getEncoded() {
+ return key;
+ }
+ }
+
+ private Cipher ecipher;
+ private Cipher dcipher;
+
+ /**
+ * Функция шифрования
+ *
+ * @param str строка открытого текста
+ * @return зашифрованная строка в формате Base64
+ */
+ public String encrypt(String str) {
+ try {
+ byte[] utf8 = str.getBytes("UTF8");
+ byte[] enc = ecipher.doFinal(utf8);
+ return Base64.encodeBase64String(enc);
+ } catch (IllegalBlockSizeException | BadPaddingException | UnsupportedEncodingException ex) {
+ Logger.getLogger(StringCrypter.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ return null;
+ }
+
+ /**
+ * Функция дешифрования
+ *
+ * @param str зашифрованная строка в формате Base64
+ * @return расшифрованная строка
+ */
+ public String decrypt(String str) {
+ try {
+ byte[] dec = Base64.decodeBase64(str);
+ byte[] utf8 = dcipher.doFinal(dec);
+ return new String(utf8, "UTF8");
+ } catch (IllegalBlockSizeException | BadPaddingException | IOException ex) {
+ Logger.getLogger(StringCrypter.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/Utilz/StringUtilz.java b/src/main/java/Utilz/StringUtilz.java
new file mode 100644
index 0000000..cf60b6a
--- /dev/null
+++ b/src/main/java/Utilz/StringUtilz.java
@@ -0,0 +1,32 @@
+package Utilz;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+
+public class StringUtilz {
+ /*
+ * Метод выравнивает длину строки знаками sign до длины строки quantitySigns
+ * */
+ public static String alignString (String object, int quantitySigns, String sign){
+ if (object.length()>=quantitySigns) return object;
+ StringBuilder result = new StringBuilder(object);
+ while (result.length()=quantitySigns) return object;
+ StringBuilder result = new StringBuilder(object);
+ while (result.length() result =null;
+
+ InputStreamReader isr = new InputStreamReader(new ByteArrayInputStream(sqlProp.getBytes()), Charset.forName("UTF-8"));
+
+ result = sqlProperties.loadFromFile(isr, filePath);
+ Printer.printLog("startTime = " +sqlProperties.getStartTime().getTime());
+ Printer.printLog(sqlProperties.toCalendar(result.get("date2")+ " 23:59:59").getTime().toString());
+ assertEquals(result.get("date2"), "01/01/2019");
+ assertEquals(result.get("sourceFile"),filePath);
+ Calendar c1 =sqlProperties.toCalendar(result.get("date2")+ " 23:59:59");
+ c1.clear(Calendar.MILLISECOND);
+ Calendar c2 = sqlProperties.getStartTime();
+ c2.clear(Calendar.MILLISECOND);
+ assertEquals(c1,c2);
+ }
+
}
\ No newline at end of file