From e61b3037f33c8175d3fff77d472b999e64ad689c Mon Sep 17 00:00:00 2001 From: Dominique Blouin <dominique.blouin@telecom-paristech.fr> Date: Fri, 12 Jun 2015 10:18:15 +0000 Subject: [PATCH] check GUI exceptions --- bin/config.xml | 2 +- crawler/bin/client.jar | Bin 24002 -> 23993 bytes crawler/bin/crawler.jar | Bin 24003 -> 23994 bytes crawler/bin/derby.log | 2 +- .../src/myutil/externalSearch/Message.java | 61 ++- src/myutil/externalSearch/Client.java | 351 ++++++++--------- src/myutil/externalSearch/Message.java | 61 ++- src/myutil/externalSearch/Record.java | 48 ++- src/ui/TDiagramMouseManager.java | 1 - src/ui/window/JDialogSearchBox.java | 356 ++++++++++-------- 10 files changed, 500 insertions(+), 382 deletions(-) diff --git a/bin/config.xml b/bin/config.xml index d7974345f7..66b674926f 100755 --- a/bin/config.xml +++ b/bin/config.xml @@ -65,7 +65,7 @@ <ExternalServer data="localhost:12345"/> -<LastWindowAttributes x="547" y="86" width="792" height="597" max="false" /> +<LastWindowAttributes x="468" y="59" width="788" height="597" max="false" /> </TURTLECONFIGURATION> diff --git a/crawler/bin/client.jar b/crawler/bin/client.jar index 4285912653b34b89c8d0dd27d690eb3532307ee3..a757d749e3595c6efe45608fdcc32b24c7e34bdb 100644 GIT binary patch delta 2812 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 delta 2973 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 aN|*?7VQvFYMgjn^oLnV(0Kn7yclLij^jw1g diff --git a/crawler/bin/crawler.jar b/crawler/bin/crawler.jar index ba7b380b2f4df3393a3e6b79f711224685c4d804..d18b857d1739146b7e24ffc9418cb229da1dafa4 100755 GIT binary patch delta 2816 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 delta 2953 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 S3_zI)0fjc_PkUSbuKXWnXkYyR diff --git a/crawler/bin/derby.log b/crawler/bin/derby.log index 4b7bc14fb3..ebb67fadcb 100755 --- a/crawler/bin/derby.log +++ b/crawler/bin/derby.log @@ -1,4 +1,4 @@ -Mon Jun 08 12:05:31 CEST 2015 : Could not listen on port 1527 on host 127.0.0.1: +Fri Jun 12 11:32:26 CEST 2015 : Could not listen on port 1527 on host 127.0.0.1: java.net.BindException: Address already in use An exception was thrown during network server startup. DRDA_ListenPort.S:Could not listen on port 1527 on host 127.0.0.1: java.net.BindException: Address already in use diff --git a/crawler/src/myutil/externalSearch/Message.java b/crawler/src/myutil/externalSearch/Message.java index 7cd104b974..5da8716d25 100644 --- a/crawler/src/myutil/externalSearch/Message.java +++ b/crawler/src/myutil/externalSearch/Message.java @@ -1,3 +1,48 @@ +/**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille + + ludovic.apvrille AT enst.fr + + This software is a computer program whose purpose is to allow the + edition of TURTLE analysis, design and deployment diagrams, to + allow the generation of RT-LOTOS or Java code from this diagram, + and at last to allow the analysis of formal validation traces + obtained from external tools, e.g. RTL from LAAS-CNRS and CADP + from INRIA Rhone-Alpes. + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited + liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + /** + * JDialogSearchBox + * unity message for client and server. + * Creation: 22/03/2015 + * @version 1.0 11/03/2015 + * @author Dan VO + * @see + */ package myutil.externalSearch; import java.awt.image.BufferedImage; @@ -10,9 +55,6 @@ import java.util.ArrayList; import java.io.Serializable; import javax.imageio.ImageIO; -/** - * Created by Dan on 3/22/15. - */ //Message format @@ -48,17 +90,19 @@ public class Message implements Serializable { public static String OPTION_SCORE = "score"; public static String OPTION_NUMBER = "number"; public static String OPTION_SYSTEM = "system"; - public static String OPTION_FILE_BIN = "filebin"; - public static String OPTION_FILE_XML = "filexml"; + //public static String OPTION_FILE_BIN = "filebin"; + //public static String OPTION_FILE_XML = "filexml"; public static String CMD_SEARCH = "search"; public static String CMD_STATISTIC = "stat"; public static String CMD_DETAIL = "detail"; + public static String CMD_HISTOGRAM = "histo"; public static String RESULT_SEARCH = "resultSearch"; public static String RESULT_STATISTIC = "resultStat"; public static String RESULT_DETAIL = "resultDetail"; + public static String RESULT_HISTOGRAM = "resultHistogram"; private String cmd; @@ -158,7 +202,6 @@ public class Message implements Serializable { public ArrayList<Object> parseMessage(Message msg) { - //TODO Parse the message return msg.content; } @@ -176,7 +219,6 @@ public class Message implements Serializable { } } catch (IOException e) { - // TODO Auto-generated catch block System.out.println("Image can't not be found!"); } @@ -195,12 +237,11 @@ public class Message implements Serializable { BufferedImage img = ImageIO.read(inStream); ImageIO.write(img, "png", new File(PIC_DES)); - System.out.println("Image has been created successfully!"); + //System.out.println("Image has been created successfully!"); } catch (IOException e) { - // TODO Auto-generated catch block - System.out.println("Image can't not be created!"); + // System.out.println("Image can't not be created!"); } } diff --git a/src/myutil/externalSearch/Client.java b/src/myutil/externalSearch/Client.java index a0705b88b3..e94970a3af 100644 --- a/src/myutil/externalSearch/Client.java +++ b/src/myutil/externalSearch/Client.java @@ -1,251 +1,198 @@ +/**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille + + ludovic.apvrille AT enst.fr + + This software is a computer program whose purpose is to allow the + edition of TURTLE analysis, design and deployment diagrams, to + allow the generation of RT-LOTOS or Java code from this diagram, + and at last to allow the analysis of formal validation traces + obtained from external tools, e.g. RTL from LAAS-CNRS and CADP + from INRIA Rhone-Alpes. + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited + liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + /** + * JDialogSearchBox + * dialog for external search with key words + * Creation: 11/03/2015 + * @version 1.0 11/03/2015 + * @author Dan VO & Huy TRUONG + * @see + */ package myutil.externalSearch; import java.io.IOException; -import java.io.PrintStream; -import java.lang.reflect.Array; -import java.net.Socket; -import java.net.SocketException; -import java.net.UnknownHostException; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.Scanner; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.net.ssl.SSLSocket; import javax.net.ssl.SSLSocketFactory; - - - +import myutil.TraceManager; import org.jsoup.Jsoup; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import org.jsoup.parser.Parser; - import org.jsoup.nodes.Document; public class Client { - //public static String dbaddr="localhost"; - //public static int dpport=9999; public Object parserAnswerMessage(Message answerMsg) { //Analyse the message from the server, //Depends on the cmd, we can determine the values String cmd = answerMsg.getCmd(); - // System.out.println(cmd); + if (cmd == null) { - System.out.println(Message.ERR_CMD); + TraceManager.addDev("Wrong message format - no cmd"); return null; } else if (cmd.equals(Message.RESULT_SEARCH)) { ArrayList<Record> lrecord = new ArrayList<>(); - - // try { - //byte[] encoded = Files.readAllBytes(Paths.get("/home/trhuy/Downloads/02-51-34.xml")); - - //ArrayList<Object> res = new ArrayList(); - //res = answerMsg.getContent(); - //System.out.println("\n"+res); - - - //byte[] encoded = (byte[])answerMsg.getContent().get(0); - - String resultxml = (String)answerMsg.getContent().get(0); - - //System.out.print(resultxml); - - Document doc = Jsoup.parse(resultxml); - for (Element e : doc.select("Row")) { - Record r = new Record(); - Document eachRow = Jsoup.parse(e.toString()); - Element e_id = eachRow.select("cve_id").first(); - Element e_title = eachRow.select("name").first(); - Element e_des = eachRow.select("summary").first(); - r.setCve_id(e_id.text()); - r.setName(e_title.text()); - r.setSummary(e_des.text()); - lrecord.add(r); - } - // } catch (IOException e) { - // e.printStackTrace(); - // } - //System.out.println(lrecord.toArray()); - return (Object)lrecord; + //get content of return result + String resultxml = (String)answerMsg.getContent().get(0); + Document doc = Jsoup.parse(resultxml); + //parser content to get value by tag name. + for (Element e : doc.select("Row")) { + Record r = new Record(); + Document eachRow = Jsoup.parse(e.toString()); + Element e_id = eachRow.select("cve_id").first(); + Element e_title = eachRow.select("name").first(); + Element e_des = eachRow.select("summary").first(); + r.setCve_id(e_id.text()); + r.setName(e_title.text()); + r.setSummary(e_des.text()); + lrecord.add(r); + } + return lrecord; } else if (cmd.equals(Message.RESULT_DETAIL)) { Record r = new Record(); - // try { - //byte[] encoded = Files.readAllBytes(Paths.get("/home/trhuy/Downloads/02-40-06.xml")); -// /byte[] encoded = (byte[])answerMsg.getContent().get(0); - String resultxml = (String)answerMsg.getContent().get(0); - //String resultxml = new String(encoded, "UTF-8"); - - Document doc = Jsoup.parse(resultxml); - for (Element e : doc.select("Row")) { - - Document eachRow = Jsoup.parse(e.toString()); - Element cve_id = eachRow.select("cve_id").first(); - Element pub_date = eachRow.select("pub_date").first(); - Element mod_date = eachRow.select("mod_date").first(); - Element score = eachRow.select("score").first(); - Element access_vector = eachRow.select("access_vector").first(); - Element access_complexity = eachRow.select("access_complexity").first(); - Element authentication = eachRow.select("authentication").first(); - Element confidentiality_impact = eachRow.select("confidentiality_impact").first(); - Element integrity_impact = eachRow.select("integrity_impact").first(); - Element availability_impact = eachRow.select("availability_impact").first(); - Element gen_date = eachRow.select("gen_date").first(); - Element cwe_id = eachRow.select("cwe_id").first(); - Element summary = eachRow.select("summary").first(); - Element ref_type = eachRow.select("ref_type").first(); - Element source = eachRow.select("source").first(); - Element link = eachRow.select("link").first(); - Element name = eachRow.select("name").first(); - - r.setCve_id(cve_id.text()); - r.setPub_date(pub_date.text()); - r.setMod_date(mod_date.text()); - r.setScore(score.text()); - r.setAccess_vector(access_vector.text()); - r.setAccess_complexity(access_complexity.text()); - r.setAuthentication(authentication.text()); - r.setConfidentiality_impact(confidentiality_impact.text()); - r.setIntegrity_impact(integrity_impact.text()); - r.setAvailability_impact(availability_impact.text()); - r.setGen_date(gen_date.text()); - r.setCwe_id(cwe_id.text()); - r.setSummary(summary.text()); - r.setRef_type(ref_type.text()); - r.setSource(source.text()); - r.setLink(link.text()); - - - System.out.print(r.toString()); - - } - // } catch (IOException e) { - // e.printStackTrace(); - //} - - return (Object)r; + //get content of return result + String resultxml = (String)answerMsg.getContent().get(0); + + //parser content to get value by tag name. + Document doc = Jsoup.parse(resultxml); + for (Element e : doc.select("Row")) { + + Document eachRow = Jsoup.parse(e.toString()); + Element cve_id = eachRow.select("cve_id").first(); + Element pub_date = eachRow.select("pub_date").first(); + Element mod_date = eachRow.select("mod_date").first(); + Element score = eachRow.select("score").first(); + Element access_vector = eachRow.select("access_vector").first(); + Element access_complexity = eachRow.select("access_complexity").first(); + Element authentication = eachRow.select("authentication").first(); + Element confidentiality_impact = eachRow.select("confidentiality_impact").first(); + Element integrity_impact = eachRow.select("integrity_impact").first(); + Element availability_impact = eachRow.select("availability_impact").first(); + Element gen_date = eachRow.select("gen_date").first(); + Element cwe_id = eachRow.select("cwe_id").first(); + Element summary = eachRow.select("summary").first(); + Element ref_type = eachRow.select("ref_type").first(); + Element source = eachRow.select("source").first(); + Element link = eachRow.select("link").first(); + Element name = eachRow.select("name").first(); + + r.setCve_id(cve_id.text()); + r.setPub_date(pub_date.text()); + r.setMod_date(mod_date.text()); + r.setScore(score.text()); + r.setAccess_vector(access_vector.text()); + r.setAccess_complexity(access_complexity.text()); + r.setAuthentication(authentication.text()); + r.setConfidentiality_impact(confidentiality_impact.text()); + r.setIntegrity_impact(integrity_impact.text()); + r.setAvailability_impact(availability_impact.text()); + r.setGen_date(gen_date.text()); + r.setCwe_id(cwe_id.text()); + r.setSummary(summary.text()); + r.setRef_type(ref_type.text()); + r.setSource(source.text()); + r.setLink(link.text()); + r.setName(name.text()); + + //System.out.print(r.toString()); + + } + + return r; } else if (cmd.equals(Message.RESULT_STATISTIC)) { - //show picture - //Use a function to convert binary to image + // the content are image. byte[] encoded = (byte[]) answerMsg.getContent().get(0); + return encoded; - return (Object)encoded; - - //Call Huy's function to load Image - } else System.out.print(Message.ERR_CMD2); + } else + TraceManager.addDev("The command is not supported\n"); return null; } - - + /** + * + * @param cmd strings in Message class. + * @param options list of options corresponds to list of values. + * @param values + * @return Message. + */ public Message createRequestMessage(String cmd, ArrayList<String> options, ArrayList<String> values) { Message requestMsg = new Message(cmd,options,values); - System.out.println(Message.SUC_CREATE_REQ_MESSAGE); + //System.out.println(Message.SUC_CREATE_REQ_MESSAGE); return requestMsg; } - public Message send(Message msg, String server, int port){ + /** + * + * @param msg Message + * @param server server address + * @param port port of service + * @return Message from Server. + * @throws IOException + * @throws ClassNotFoundException + */ + public Message send(Message msg, String server, int port) throws IOException, ClassNotFoundException { SSLSocket sslClient = null; - try { - //Socket client = new Socket(dbaddr,dpport); - SSLSocketFactory sslSocketFactory = (SSLSocketFactory)SSLSocketFactory.getDefault(); - sslClient = (SSLSocket)sslSocketFactory.createSocket(server,port); - - sslClient.setEnabledCipherSuites(sslClient.getSupportedCipherSuites()); - System.out.println("Client has been created successfully!"); - - ObjectOutputStream outputStream = new ObjectOutputStream(sslClient.getOutputStream()); - ObjectInputStream inputStream = new ObjectInputStream(sslClient.getInputStream()); - - outputStream.writeObject(msg); - - //Get back the message from server - Message answerMsg = new Message(); - try { - answerMsg = (Message) inputStream.readObject(); - } catch (ClassNotFoundException ex) { - // Logger.getLogger(MultiThreadServer.class.getName()).log(Level.SEVERE, null, ex); - } - - - outputStream.close(); - inputStream.close(); - sslClient.close(); - return answerMsg; - - } catch (UnknownHostException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - return null; - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - return null; - } - - - } - - public void main(String[] args){ - try { - Socket client = new Socket("LocalHost",1234); - System.out.println("Client has been created successfully!"); - - ObjectOutputStream outputStream = new ObjectOutputStream(client.getOutputStream()); - ObjectInputStream inputStream = new ObjectInputStream(client.getInputStream()); - - //Create a temporary data to tests - String cmd ="stat"; - ArrayList<String> options = new ArrayList(); - ArrayList<String> values = new ArrayList(); - - options.add("keyword"); - options.add("year"); - options.add("system"); - - values.add("Stuxnet"); - values.add("2014"); - values.add("windows"); - - //Create a msg with constructors - Message msg = createRequestMessage(cmd, options, values); - - //Push the message to server - outputStream.writeObject(msg); - - //Get back the message from server - Message answerMsg = new Message(); - try { - answerMsg = (Message) inputStream.readObject(); - } catch (ClassNotFoundException ex) { - // Logger.getLogger(MultiThreadServer.class.getName()).log(Level.SEVERE, null, ex); - } + //crate a ssl socket. + SSLSocketFactory sslSocketFactory = (SSLSocketFactory)SSLSocketFactory.getDefault(); + sslClient = (SSLSocket)sslSocketFactory.createSocket(server,port); - //Print out the content from the server - // System.out.println(answerMsg.getContent()); + sslClient.setEnabledCipherSuites(sslClient.getSupportedCipherSuites()); + TraceManager.addDev("Client has been created successfully!"); - parserAnswerMessage(answerMsg); - // Message.convertByteToImage(answerMsg.getImageByte()); + ObjectOutputStream outputStream = new ObjectOutputStream(sslClient.getOutputStream()); + ObjectInputStream inputStream = new ObjectInputStream(sslClient.getInputStream()); - outputStream.close(); - inputStream.close(); - client.close(); + outputStream.writeObject(msg); - } catch (UnknownHostException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + //Get back the message from server + Message answerMsg = (Message) inputStream.readObject(); + outputStream.close(); + inputStream.close(); + sslClient.close(); + return answerMsg; } } diff --git a/src/myutil/externalSearch/Message.java b/src/myutil/externalSearch/Message.java index 7cd104b974..a6dfda2068 100644 --- a/src/myutil/externalSearch/Message.java +++ b/src/myutil/externalSearch/Message.java @@ -1,3 +1,48 @@ +/**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille + + ludovic.apvrille AT enst.fr + + This software is a computer program whose purpose is to allow the + edition of TURTLE analysis, design and deployment diagrams, to + allow the generation of RT-LOTOS or Java code from this diagram, + and at last to allow the analysis of formal validation traces + obtained from external tools, e.g. RTL from LAAS-CNRS and CADP + from INRIA Rhone-Alpes. + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited + liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + /** + * JDialogSearchBox + * unity message for client and server. + * Creation: 22/03/2015 + * @version 1.0 11/03/2015 + * @author Dan VO + * @see + */ package myutil.externalSearch; import java.awt.image.BufferedImage; @@ -10,9 +55,6 @@ import java.util.ArrayList; import java.io.Serializable; import javax.imageio.ImageIO; -/** - * Created by Dan on 3/22/15. - */ //Message format @@ -48,17 +90,19 @@ public class Message implements Serializable { public static String OPTION_SCORE = "score"; public static String OPTION_NUMBER = "number"; public static String OPTION_SYSTEM = "system"; - public static String OPTION_FILE_BIN = "filebin"; - public static String OPTION_FILE_XML = "filexml"; + //public static String OPTION_FILE_BIN = "filebin"; + //public static String OPTION_FILE_XML = "filexml"; public static String CMD_SEARCH = "search"; public static String CMD_STATISTIC = "stat"; public static String CMD_DETAIL = "detail"; + public static String CMD_HISTOGRAM = "histo"; public static String RESULT_SEARCH = "resultSearch"; public static String RESULT_STATISTIC = "resultStat"; public static String RESULT_DETAIL = "resultDetail"; + public static String RESULT_HISTOGRAM = "resultHistogram"; private String cmd; @@ -158,7 +202,6 @@ public class Message implements Serializable { public ArrayList<Object> parseMessage(Message msg) { - //TODO Parse the message return msg.content; } @@ -176,7 +219,6 @@ public class Message implements Serializable { } } catch (IOException e) { - // TODO Auto-generated catch block System.out.println("Image can't not be found!"); } @@ -195,12 +237,11 @@ public class Message implements Serializable { BufferedImage img = ImageIO.read(inStream); ImageIO.write(img, "png", new File(PIC_DES)); - System.out.println("Image has been created successfully!"); + //System.out.println("Image has been created successfully!"); } catch (IOException e) { - // TODO Auto-generated catch block - System.out.println("Image can't not be created!"); + // System.out.println("Image can't not be created!"); } } diff --git a/src/myutil/externalSearch/Record.java b/src/myutil/externalSearch/Record.java index 756d6b3e44..35ecae7f1e 100644 --- a/src/myutil/externalSearch/Record.java +++ b/src/myutil/externalSearch/Record.java @@ -1,11 +1,51 @@ package myutil.externalSearch; -/** - * Created by trhuy on 5/12/15. +/**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille + + ludovic.apvrille AT enst.fr + + This software is a computer program whose purpose is to allow the + edition of TURTLE analysis, design and deployment diagrams, to + allow the generation of RT-LOTOS or Java code from this diagram, + and at last to allow the analysis of formal validation traces + obtained from external tools, e.g. RTL from LAAS-CNRS and CADP + from INRIA Rhone-Alpes. + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited + liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + /** + * JDialogSearchBox + * format of return message from CVE database + * Creation: 12/03/2015 + * @version 1.0 11/03/2015 + * @author Huy TRUONG + * @see */ public class Record { - //private String id; - //private String n; private String summary; private String cve_id ; private String pub_date ; diff --git a/src/ui/TDiagramMouseManager.java b/src/ui/TDiagramMouseManager.java index 6db772510b..1d869443fe 100755 --- a/src/ui/TDiagramMouseManager.java +++ b/src/ui/TDiagramMouseManager.java @@ -347,7 +347,6 @@ public class TDiagramMouseManager implements MouseListener, MouseMotionListener //open a Search Dialog with seleted component's value if ( (e.getButton() == MouseEvent.BUTTON1) && e.isAltDown()) { byte info = tdp.hoveredComponent(e.getX(), e.getY()); - System.out.print (info); if (info > 1) { tgc = tdp.componentHovered(); String search = tgc.getValue(); diff --git a/src/ui/window/JDialogSearchBox.java b/src/ui/window/JDialogSearchBox.java index be00814ddd..3affd3e827 100644 --- a/src/ui/window/JDialogSearchBox.java +++ b/src/ui/window/JDialogSearchBox.java @@ -53,7 +53,6 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import javax.imageio.ImageIO; -import java.io.File; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; @@ -94,6 +93,7 @@ public class JDialogSearchBox extends javax.swing.JFrame { private javax.swing.JComboBox combobox_Score; private javax.swing.JComboBox combobox_System; private javax.swing.JComboBox combobox_Year; + private javax.swing.JComboBox combobox_Diagram; private javax.swing.JCheckBox databaseCb; private javax.swing.JTextPane detailText_db; private javax.swing.JTextPane detailText_google; @@ -125,6 +125,7 @@ public class JDialogSearchBox extends javax.swing.JFrame { //private TableSorter resultTable_google; private javax.swing.JTextField searchBox; private javax.swing.JButton searchBt; + private javax.swing.JButton drawBt; private javax.swing.JLabel jLabel_Keyword; private javax.swing.JLabel jLabel_Result; @@ -142,11 +143,11 @@ public class JDialogSearchBox extends javax.swing.JFrame { private DefaultListModel listModel; - ArrayList<GoogleSearch> resultGoogle; + //ArrayList<GoogleSearch> resultGoogle; int searchGoogle; - ArrayList<GoogleSearch> resultGoogleScholar; + //ArrayList<GoogleSearch> resultGoogleScholar; int searchGoogleScholar; - ArrayList<GoogleSearch> resultDatabase; + //ArrayList<GoogleSearch> resultDatabase; int searchDatabase; TDiagramMouseManager tdmm ; @@ -161,7 +162,7 @@ public class JDialogSearchBox extends javax.swing.JFrame { this.tdmm = tdmm; this.setTitle("External Search"); GraphicLib.centerOnParent(this); - String s=""; + //String s=""; for (int i =0; i< l.size(); i++){ addValueListKeyword(l.get(i)); } @@ -216,9 +217,12 @@ public class JDialogSearchBox extends javax.swing.JFrame { jScrollPane8= new JScrollPane(); jScrollPane9= new JScrollPane(); jTextaddressDB = new JTextField(); + combobox_Diagram = new javax.swing.JComboBox(); + drawBt = new JButton(); + String DIAGRAM_LIST[] = {"None","Statistic","Histogram","pie"}; String SYSTEM_LIST[] = {"all", "linux", "windows", "others"}; - String TIME_LIST[]= {"all", "last year", "last 5 years", "last 10 years"}; + String TIME_LIST[]= {"all", "last year", "last 3 years"}; String SCORE_LIST[] = {"all", "5-7", "7-8", "8-9"}; String COLUMNTITLE_G[] ={"No", "Title", "Link"} ; String COLUMNTITLE_GS[]= {"No", "Title", "Author", "Link"}; @@ -252,8 +256,10 @@ public class JDialogSearchBox extends javax.swing.JFrame { removeBt.setText("Remove"); removeBt.setActionCommand("Remove"); removeBt.setEnabled(false); - + drawBt.setText("Draw"); + drawBt.setEnabled(false); searchBt.setText("Search"); + combobox_Diagram.setEnabled(false); searchBox.setText("Key words"); @@ -370,7 +376,7 @@ public class JDialogSearchBox extends javax.swing.JFrame { jTabbedPane2.addTab(GOOGLE_SCHOLAR, jPanel_GoogleScholarTab); - ///// + ///// resultTable_db.setModel(new javax.swing.table.DefaultTableModel(new Object[][]{}, COLUMNTITLE_DB) { @Override @@ -404,12 +410,14 @@ public class JDialogSearchBox extends javax.swing.JFrame { jTabbedPane2.addTab(DB, jPanel_DBTab); + combobox_System.setModel(new javax.swing.DefaultComboBoxModel(SYSTEM_LIST)); combobox_Year.setModel(new javax.swing.DefaultComboBoxModel(TIME_LIST)); combobox_Score.setModel(new javax.swing.DefaultComboBoxModel(SCORE_LIST)); + combobox_Diagram.setModel(new javax.swing.DefaultComboBoxModel(DIAGRAM_LIST)); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); @@ -434,8 +442,9 @@ public class JDialogSearchBox extends javax.swing.JFrame { .addComponent(removeBt)) .addGap(100, 100, 100))) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(jButton_Setting, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jButton_Statistic, javax.swing.GroupLayout.DEFAULT_SIZE, 88, Short.MAX_VALUE)) + .addComponent(jButton_Setting, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(combobox_Diagram, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel_Score) @@ -443,16 +452,20 @@ public class JDialogSearchBox extends javax.swing.JFrame { .addComponent(jLabel_System)) .addGap(37, 37, 37) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(combobox_Score, 0, 142, Short.MAX_VALUE) - .addComponent(combobox_Year, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(combobox_System, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addComponent(combobox_Score, 0, 142, Short.MAX_VALUE) + .addComponent(combobox_Year, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(combobox_System, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + )) .addGroup(layout.createSequentialGroup() .addComponent(jLabel_Status) .addGap(0, 0, Short.MAX_VALUE)) + .addGroup(layout.createSequentialGroup() .addComponent(searchBox) - .addGap(18, 18, 18) - .addComponent(searchBt, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGap(10, 10, 10) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(searchBt, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(drawBt, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE)))) .addContainerGap()) ); layout.setVerticalGroup( @@ -471,8 +484,9 @@ public class JDialogSearchBox extends javax.swing.JFrame { .addComponent(combobox_System, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(googleScholarCb) - .addComponent(jButton_Statistic)) + .addComponent(googleScholarCb) + .addComponent(combobox_Diagram, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + ) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(removeBt)) .addGroup(layout.createSequentialGroup() @@ -485,9 +499,11 @@ public class JDialogSearchBox extends javax.swing.JFrame { .addComponent(combobox_Year, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel_Year)))) .addGap(24, 24, 24) + .addComponent(drawBt) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(searchBox, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(searchBt)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jTabbedPane2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) @@ -521,19 +537,22 @@ public class JDialogSearchBox extends javax.swing.JFrame { public void checkandsetSearchBt() { - if (searchBox.getText().length() <= 0 || searchBox.getText().length() > MAXLENGTH_INPUT) { if (searchBox.getText().length() > MAXLENGTH_INPUT) JOptionPane.showMessageDialog(null, ERROR_INPUT_TOO_LONG, "Warning", JOptionPane.WARNING_MESSAGE); searchBt.setEnabled(false); + drawBt.setEnabled(false); } else + if (combobox_Diagram.getSelectedItem() != "None") + drawBt.setEnabled(true); searchBt.setEnabled(true); - if ( ! isPrintableString(searchBox.getText())) { + if (!isPrintableString(searchBox.getText())) { JOptionPane.showMessageDialog(null, "Not printable character", "Warning", JOptionPane.WARNING_MESSAGE); searchBt.setEnabled(false); + drawBt.setEnabled(false); } } }); @@ -547,7 +566,7 @@ public class JDialogSearchBox extends javax.swing.JFrame { googleCb.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - if (googleCb.isSelected() && ListKeywords.getModel().getSize()>0) + if (googleCb.isSelected() && ListKeywords.getModel().getSize() > 0) searchBt.setEnabled(true); googleCbActionPerformed(evt); } @@ -555,16 +574,32 @@ public class JDialogSearchBox extends javax.swing.JFrame { databaseCb.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - if (databaseCb.isSelected() && ListKeywords.getModel().getSize()>0) + if (databaseCb.isSelected()){ + combobox_Diagram.setEnabled(true); + if (combobox_Diagram.getSelectedItem()!="None") + drawBt.setEnabled(true); + else drawBt.setEnabled(false); + }else { + combobox_Diagram.setEnabled(false); + drawBt.setEnabled(false); + } + if (databaseCb.isSelected() && ListKeywords.getModel().getSize() > 0){ searchBt.setEnabled(true); + } databaseCbActionPerformed(evt); } }); googleScholarCb.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - if (googleScholarCb.isSelected() && ListKeywords.getModel().getSize()>0) + if (googleScholarCb.isSelected() && ListKeywords.getModel().getSize() > 0) { searchBt.setEnabled(true); + drawBt.setEnabled(true); + }else + { + //searchBt.setEnabled(false); + drawBt.setEnabled(false); + } googleScholarCbActionPerformed(evt); } }); @@ -642,13 +677,15 @@ public class JDialogSearchBox extends javax.swing.JFrame { Message msg = new Message(Message.CMD_DETAIL); msg.addKeywordMessage(st); - //Client cl = new Client(); + //Client cl = new Client();) Message returnMsg = sendMessage(msg); //Message returnMsg = new Message(Message.RESULT_DETAIL); //Record r = (Record)cl.parserAnswerMessage(returnMsg); - Record r = (Record) parserMessage(returnMsg); - printDetailRecord(r); + if (returnMsg != null) { + Record r = (Record) parserMessage(returnMsg); + printDetailRecord(r); + } } } @@ -719,12 +756,14 @@ public class JDialogSearchBox extends javax.swing.JFrame { ); - jButton_Statistic.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent actionEvent) { + drawBt.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent actionEvent) { + //System.out.print(combobox_Diagram.getSelectedItem()); + if (combobox_Diagram.getSelectedItem() == "statistic") doStatistic(); - } - }); + } + }); jTextaddressDB.getDocument().addDocumentListener(new DocumentListener() { @Override @@ -744,11 +783,14 @@ public class JDialogSearchBox extends javax.swing.JFrame { }); - jTabbedPane2.addChangeListener(new ChangeListener() { + + combobox_Diagram.addActionListener(new ActionListener() { @Override - public void stateChanged(ChangeEvent changeEvent) { - //detailText_db.setDocument(new HTMLDocument()); - //detailText_google.setDocument(new HTMLDocument()); + public void actionPerformed(ActionEvent actionEvent) { + if (combobox_Diagram.getSelectedItem() == "None" || searchBox.getText().length() <=0) + drawBt.setEnabled(false); + else if ((combobox_Diagram.getSelectedItem() != "None" && searchBox.getText().length() >0)) + drawBt.setEnabled(true); } }); @@ -760,11 +802,33 @@ public class JDialogSearchBox extends javax.swing.JFrame { this.dispose(); } - public Message sendMessage(Message msg){ + /** + * + * @param msg + * @return + */ + public Message sendMessage(Message msg) { Client cl = new Client(); - return cl.send(msg,dbaddress,dbport); + try{ + return cl.send(msg,dbaddress,dbport); + }catch (IOException e){ + JOptionPane.showMessageDialog(null, "Cannot connect to server !!!", "Warning", + JOptionPane.WARNING_MESSAGE); + return null; + } catch (ClassNotFoundException e) { + JOptionPane.showMessageDialog(null, "Cannot parse message!!!", "Warning", + JOptionPane.WARNING_MESSAGE); + return null; + } + } + + /** + * + * @param msg + * @return Object + */ public Object parserMessage(Message msg){ Client cl = new Client(); return cl.parserAnswerMessage(msg); @@ -817,6 +881,11 @@ public class JDialogSearchBox extends javax.swing.JFrame { } + + /** + * + * @param evt + */ private void searchBtActionPerformed(java.awt.event.ActionEvent evt) { //reset Tab title @@ -824,14 +893,11 @@ public class JDialogSearchBox extends javax.swing.JFrame { jTabbedPane2.setTitleAt(1, GOOGLE_SCHOLAR); jTabbedPane2.setTitleAt(2, DB); - - if (searchGoogle == 0 && searchGoogleScholar == 0 && searchDatabase == 0) { JOptionPane.showMessageDialog(null, "Please select the resource to search","Warning", JOptionPane.WARNING_MESSAGE); } - Thread t = new Thread(new Runnable() { @Override public void run() { @@ -975,20 +1041,27 @@ public class JDialogSearchBox extends javax.swing.JFrame { t.start(); } - - public void showtable(ArrayList<Object[]> list, DefaultTableModel model,int index){ + /** + * Display content in table. + * @param list + * @param model + * @param objectType 0: google + * 1: google scholar + * 2: database + */ + public void showtable(ArrayList<Object[]> list, DefaultTableModel model,int objectType){ int id=0; - if (index ==1 || index ==0) { + if (objectType ==1 || objectType ==0) { for (Object[] o : list) { id = (Integer) (o[0]); GoogleSearch gs = (GoogleSearch) (o[1]); - if (index == 0) + if (objectType == 0) model.addRow(new Object[]{id, gs.getTitle(), gs.getUrl()}); - else if (index == 1) + else if (objectType == 1) model.addRow(new Object[]{id, gs.getTitle(), gs.getAuthors(), gs.getUrl()}); } - } else if (index == 2){ + } else if (objectType == 2){ for (Object[] o : list) { id = (Integer) (o[0]); Record r = (Record) (o[1]); @@ -997,20 +1070,29 @@ public class JDialogSearchBox extends javax.swing.JFrame { } - if (index ==0 ){ - jTabbedPane2.setTitleAt(index, GOOGLE + " [" + model.getRowCount() + "]"); + if (objectType ==0 ){ + jTabbedPane2.setTitleAt(objectType, GOOGLE + " [" + model.getRowCount() + "]"); } - else if (index ==1 ){ - jTabbedPane2.setTitleAt(index, GOOGLE_SCHOLAR + " [" + model.getRowCount() + "]"); + else if (objectType ==1 ){ + jTabbedPane2.setTitleAt(objectType, GOOGLE_SCHOLAR + " [" + model.getRowCount() + "]"); } - else if (index ==2 ){ - jTabbedPane2.setTitleAt(index, DB + " [" + model.getRowCount() + "]"); + else if (objectType ==2 ){ + jTabbedPane2.setTitleAt(objectType, DB + " [" + model.getRowCount() + "]"); } searchBt.setEnabled(true); jLabel_Status.setText("Finished"); - //jTabbedPane2.updateUI(); } + /** + * + * @param evt + * @param rows + * @param resultTable + * @param textpane + * @param typeObject 0: google + * 1: google scholar + * 2: database + */ private void selectrow(ListSelectionEvent evt,ArrayList<Object[]> rows,JTable resultTable,JTextPane textpane,int typeObject) { int rowindex = resultTable.getSelectedRow(); int id =0; @@ -1076,15 +1158,20 @@ public class JDialogSearchBox extends javax.swing.JFrame { this.combobox_Score.setEnabled(false); this.combobox_Year.setEnabled(false); } - } - + } + + + /** + * add new value into Keyword list. + * @param st + */ public void addValueListKeyword(String st){ if (! this.listModel.contains(st)){ this.listModel.addElement(st); String query = ""; - if (this.listModel.getSize()>0) + //split the string query = splitAndConcat((String) this.listModel.elementAt(0)); for (int i=1; i< this.listModel.getSize(); i++ ){ if (query != "") @@ -1119,7 +1206,8 @@ public class JDialogSearchBox extends javax.swing.JFrame { i=i+1; } } - + + public void putGoogleScholarToTable(ArrayList<GoogleSearch> a) { int i = this.rowsGoogleScholar.size()+1; @@ -1129,12 +1217,20 @@ public class JDialogSearchBox extends javax.swing.JFrame { } } + private void printDetailRecord(Record r){ if (r!=null) this.detailText_db.setText(formatOutput_DB_DETAIL(r)); } - + /** + * + * @param obj + * @param typeObject 0: obj from google. + * 1: obj from googleScholar + * 2: obj from database + * @param textPane + */ public void presentDataInDetail(Object obj, int typeObject, JTextPane textPane){ textPane.setContentType("text/html"); @@ -1156,89 +1252,6 @@ public class JDialogSearchBox extends javax.swing.JFrame { } } - public void presentDataInDetail1(Object obj, int typeObject, JTextPane textPane){ - StyledDocument doc = textPane.getStyledDocument(); - textPane.setText(""); - - SimpleAttributeSet bold = new SimpleAttributeSet(); - StyleConstants.setBold(bold, true); - StyleConstants.setFontSize(bold, 15); - SimpleAttributeSet underline = new SimpleAttributeSet(); - StyleConstants.setUnderline(underline, true); - SimpleAttributeSet normal = new SimpleAttributeSet(); - StyleConstants.setBold(normal, false); - StyleConstants.setFontSize(normal, 13); - - if (typeObject ==1 || typeObject ==0 ){ - int offset = 0; - GoogleSearch gs = (GoogleSearch)obj; - if (gs != null) - { - String detail = ""; - if (gs.getTitle()!=null) { - //detail = detail + gs.getTitle() + "\n"; - try { - doc.insertString(offset, gs.getTitle() + "\n", bold); - offset = offset+ gs.getTitle().length()+1; - } catch (BadLocationException e) { - e.printStackTrace(); - } - } - - - - if (gs.getAuthors()!=null) { - //detail = detail + gs.getAuthors() + "\n"; - try { - doc.insertString(offset, gs.getAuthors() + "\n", normal); - offset = offset+gs.getAuthors().length()+1; - } catch (BadLocationException e) { - e.printStackTrace(); - } - } - if (gs.getUrl()!=null){ - try { - detail = detail + gs.getUrl()+"\n"; - doc.insertString(offset, gs.getUrl() + "\n", underline); - offset = offset+gs.getUrl().length()+1; - } catch (BadLocationException e) { - e.printStackTrace(); - } - } - - if (gs.getCitedNumber()!=null){ - try { - //detail = detail + gs.getCitedNumber()+"\n"; - doc.insertString(offset, gs.getCitedNumber() + "\n", normal); - offset = offset+gs.getCitedNumber().length()+1; - } catch (BadLocationException e) { - e.printStackTrace(); - } - } - - if (gs.getDesc()!=null){ - try { - //detail = detail + gs.getCitedNumber()+"\n"; - //detail = detail + gs.getDesc()+"\n"; - doc.insertString(offset, gs.getDesc() + "\n", normal); - offset = offset+gs.getDesc().length()+1; - } catch (BadLocationException e) { - e.printStackTrace(); - } - } - - - //textPane.setText(detail); - } - }else{ - Record r = (Record)obj; - if (r!=null) { - String detail = r.getSummary(); - textPane.setText(detail); - } - } - - } //========================================== //database functions @@ -1265,22 +1278,24 @@ public class JDialogSearchBox extends javax.swing.JFrame { Message ret = sendMessage(msg); + if (ret !=null) + { byte[] b = (byte[])parserMessage(ret); - if(b != null){ + if(b != null) { ByteArrayInputStream in = new ByteArrayInputStream(b); - img = ImageIO.read(in); - ImageIcon icon=new ImageIcon(img); - JFrame frame=new JFrame(); - frame.setLayout(new FlowLayout()); - frame.setSize(200,300); - JLabel lbl=new JLabel(); - lbl.setIcon(icon); - frame.add(lbl); - frame.setVisible(true); - frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + img = ImageIO.read(in); + ImageIcon icon = new ImageIcon(img); + Image scaleImage = icon.getImage().getScaledInstance(750, 200, Image.SCALE_DEFAULT); + icon = new ImageIcon(scaleImage); + JLabel imageLabel = new JLabel(icon); + JScrollPane scrollPane = new JScrollPane(imageLabel); + jTabbedPane2.addTab("HUY", scrollPane); + + } } } catch (IOException e) { - e.printStackTrace(); + JOptionPane.showMessageDialog(null, "Cannot display diagram !!!", "Warning", + JOptionPane.WARNING_MESSAGE); } } @@ -1303,7 +1318,11 @@ public class JDialogSearchBox extends javax.swing.JFrame { return value; } - + /** + * Check a string if it contains only number. + * @param str + * @return + */ public boolean isNum(String str){ try{ Integer.parseInt(str); @@ -1313,6 +1332,11 @@ public class JDialogSearchBox extends javax.swing.JFrame { } } + /** + * create html format for content from Google Scholar + * @param gs + * @return String + */ public String formatOutput_GoogleScholar (GoogleSearch gs){ String html = "<html>" + "<title>"+gs.getTitle()+"</title>" + @@ -1326,6 +1350,12 @@ public class JDialogSearchBox extends javax.swing.JFrame { "</html>"; return html; } + + /** + * create html format for content from Google + * @param gs + * @return String + */ public String formatOutput_Google (GoogleSearch gs){ String html = "<html>" + "<title>"+gs.getTitle()+"</title>" + @@ -1338,6 +1368,11 @@ public class JDialogSearchBox extends javax.swing.JFrame { return html; } + /** + * create html format for content from Database (not detail) + * @param r + * @return String + */ public String formatOutput_DB_SHORT (Record r){ String html = "<html>" + "<body style=\"font-size: 14pt\">" + @@ -1349,6 +1384,11 @@ public class JDialogSearchBox extends javax.swing.JFrame { return html; } + /** + * create html format for content from Database (detail) + * @param r + * @return String + */ public String formatOutput_DB_DETAIL (Record r){ String html = "<html>" + "<body style=\"font-size: 14pt\">" + @@ -1370,6 +1410,11 @@ public class JDialogSearchBox extends javax.swing.JFrame { return html; } + /** + * Check the printable character. + * @param c + * @return + */ public boolean isPrintableChar( char c ) { Character.UnicodeBlock block = Character.UnicodeBlock.of( c ); return (!Character.isISOControl(c)) && @@ -1378,6 +1423,11 @@ public class JDialogSearchBox extends javax.swing.JFrame { block != Character.UnicodeBlock.SPECIALS; } + /** + * Check the printable string + * @param s + * @return + */ public boolean isPrintableString(String s){ if (s==null) return false; -- GitLab