/** * Identifies. * * @param reader the catalog reader. * @exception IOException if the catalog cannot be accessed. * @exception QueryFailException if the query to the server is failed. */ public void identify(CatalogReader reader) throws IOException, QueryFailException { // Starts the polling thread. PollingThread thread = new PollingThread(); thread.start(); try { Variability[] records = getSelectedRecords(); for (int i = 0; i < records.length; i++) { CatalogStar star = records[i].getStar(); StarList l = reader.read(star.getCoor(), 0.1); for (int j = 0; j < l.size(); j++) { CatalogStar s = (CatalogStar) l.elementAt(j); double radius = star.getMaximumPositionErrorInArcsec() + s.getMaximumPositionErrorInArcsec(); double distance = star.getCoor().getAngularDistanceTo(s.getCoor()); if (distance < radius / 3600.0) // Overwrites the already identified star. records[i].setIdentifiedStar(s); } } } finally { // Ends the polling thread. thread.end(); } }
/** Runs this thread. */ public void run() { CommonFileChooser file_chooser = new CommonFileChooser(); file_chooser.setDialogTitle("Choose a directory."); file_chooser.setMultiSelectionEnabled(false); file_chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); if (file_chooser.showSaveDialog(pane) == JFileChooser.APPROVE_OPTION) { try { File directory = file_chooser.getSelectedFile(); directory.mkdirs(); // Outputs the variability XML file. String path = FileManager.unitePath(directory.getAbsolutePath(), "package.xml"); File file = new File(path); if (file.exists()) { String message = "Overwrite to " + file.getPath() + " ?"; if (0 != JOptionPane.showConfirmDialog( pane, message, "Confirmation", JOptionPane.YES_NO_OPTION)) { return; } } XmlVariabilityHolder holder = new XmlVariabilityHolder(); Variability[] records = getSelectedRecords(); for (int i = 0; i < records.length; i++) { XmlVariability variability = new XmlVariability(records[i]); holder.addVariability(variability); } holder.write(file); // Copies the report XML document files. Hashtable hash_xml = new Hashtable(); for (int i = 0; i < records.length; i++) { XmlMagRecord[] mag_records = records[i].getMagnitudeRecords(); for (int j = 0; j < mag_records.length; j++) hash_xml.put(mag_records[j].getImageXmlPath(), this); } Vector failed_list = new Vector(); Enumeration keys = hash_xml.keys(); while (keys.hasMoreElements()) { String xml_path = (String) keys.nextElement(); try { File src_file = desktop.getFileManager().newFile(xml_path); File dst_file = new File(FileManager.unitePath(directory.getAbsolutePath(), xml_path)); if (dst_file.exists() == false) FileManager.copy(src_file, dst_file); } catch (Exception exception) { failed_list.addElement(xml_path); } } if (failed_list.size() > 0) { String header = "Failed to copy the following XML files:"; MessagesDialog dialog = new MessagesDialog(header, failed_list); dialog.show(pane, "Error", JOptionPane.ERROR_MESSAGE); } // Copies the image files. failed_list = new Vector(); keys = hash_xml.keys(); while (keys.hasMoreElements()) { path = (String) keys.nextElement(); try { XmlInformation info = XmlReport.readInformation(desktop.getFileManager().newFile(path)); path = info.getImage().getContent(); File src_file = desktop.getFileManager().newFile(path); File dst_file = new File(FileManager.unitePath(directory.getAbsolutePath(), path)); if (dst_file.exists() == false) FileManager.copy(src_file, dst_file); } catch (Exception exception) { failed_list.addElement(path); } } if (failed_list.size() > 0) { String header = "Failed to copy the following image files:"; MessagesDialog dialog = new MessagesDialog(header, failed_list); dialog.show(pane, "Error", JOptionPane.ERROR_MESSAGE); } // Creates the sub catalog database. try { DiskFileSystem file_system = new DiskFileSystem( new File( directory.getAbsolutePath(), net.aerith.misao.pixy.Properties.getDatabaseDirectoryName())); CatalogDBManager new_manager = new GlobalDBManager(file_system).getCatalogDBManager(); Hashtable hash_stars = new Hashtable(); for (int i = 0; i < records.length; i++) { CatalogStar star = records[i].getStar(); CatalogDBReader reader = new CatalogDBReader(desktop.getDBManager().getCatalogDBManager()); StarList list = reader.read(star.getCoor(), 0.5); for (int j = 0; j < list.size(); j++) { CatalogStar s = (CatalogStar) list.elementAt(j); hash_stars.put(s.getOutputString(), s); } } keys = hash_stars.keys(); while (keys.hasMoreElements()) { String string = (String) keys.nextElement(); CatalogStar star = (CatalogStar) hash_stars.get(string); new_manager.addElement(star); } } catch (Exception exception) { String message = "Failed to create sub catalog database."; JOptionPane.showMessageDialog(pane, message, "Error", JOptionPane.ERROR_MESSAGE); } String message = "Completed."; JOptionPane.showMessageDialog(pane, message); } catch (IOException exception) { String message = "Failed."; JOptionPane.showMessageDialog(pane, message, "Error", JOptionPane.ERROR_MESSAGE); } } }