• Views
  • Iteration Report
  • My Iteration Report
  •  
OMERO.server
  • Login
  • Help/Guide
  • About Trac
  • Preferences
  • Wiki
  • Timeline
  • Roadmap
  • Browse Source
  • View Tickets
  • Search

Context Navigation

  • ← Previous Change
  • Next Change →

Changeset 1066 for branches/bioformats-omero

Show
Ignore:
Timestamp:
11/06/06 13:06:59 (2 years ago)
Author:
TheBrain
Message:

- Added archiving feature to the importer. You can now archive original files to the server!
- Updated the import dialogs to provide more information when importing.

Location:
branches/bioformats-omero/src/ome/formats
Files:
11 modified

  • OMEROMetadataStore.java (modified) (7 diffs)
  • importer/About.java (modified) (2 diffs)
  • importer/FileQueueChooser.java (modified) (5 diffs)
  • importer/FileQueueHandler.java (modified) (13 diffs)
  • importer/FileQueueTable.java (modified) (12 diffs)
  • importer/ImportContainer.java (modified) (1 diff)
  • importer/ImportDialog.java (modified) (8 diffs)
  • importer/ImportFixture.java (modified) (2 diffs)
  • importer/ImportHandler.java (modified) (5 diffs)
  • importer/ImportLibrary.java (modified) (2 diffs)
  • importer/Main.java (modified) (2 diffs)

Legend:

Unmodified
Added
Removed
  • branches/bioformats-omero/src/ome/formats/OMEROMetadataStore.java

    r1053 r1066  
    3030package ome.formats; 
    3131 
     32import java.io.File; 
     33import java.io.FileInputStream; 
     34import java.io.FileNotFoundException; 
     35import java.nio.ByteBuffer; 
    3236import java.util.ArrayList; 
    3337import java.util.List; 
    … …  
    3842import ome.api.IQuery; 
    3943import ome.api.IUpdate; 
     44import ome.api.RawFileStore; 
    4045import ome.api.RawPixelsStore; 
    4146import ome.model.IObject; 
    … …  
    4752import ome.model.core.Image; 
    4853import ome.model.core.LogicalChannel; 
     54import ome.model.core.OriginalFile; 
    4955import ome.model.core.Pixels; 
    5056import ome.model.core.PixelsDimensions; 
    … …  
    5258import ome.model.enums.AcquisitionMode; 
    5359import ome.model.enums.DimensionOrder; 
     60import ome.model.enums.Format; 
    5461import ome.model.enums.PhotometricInterpretation; 
    5562import ome.model.enums.PixelsType; 
    … …  
    96103    private Experimenter    exp; 
    97104     
     105    private RawFileStore    rawFileStore; 
     106     
    98107    /** 
    99108     * Creates a new instance. 
    … …  
    129138            iUpdate = sf.getUpdateService(); 
    130139            pservice = sf.createRawPixelsStore(); 
     140            rawFileStore = sf.createRawFileStore(); 
    131141             
    132142            exp = iQuery.findByString(Experimenter.class, "omeName", username); 
    … …  
    635645        return pixels.getId(); 
    636646    } 
     647     
     648     
     649    public void setOriginalFiles(File[] files) 
     650    { 
     651        for (File file: files) 
     652        { 
     653            Format f = iQuery.findByString(Format.class, "value", "DV"); 
     654            OriginalFile oFile = new OriginalFile(); 
     655            oFile.setName(file.getName()); 
     656            oFile.setPath(file.getAbsolutePath()); 
     657            oFile.setSize(new Integer((int) file.length())); //FIXME this needs to be long 
     658            oFile.setSha1("pending"); 
     659            oFile.setFormat(f); 
     660            pixels.linkOriginalFile(oFile); 
     661        } 
     662    } 
     663     
     664    public void writeFilesToFileStore(File[] files, long pixelsId) 
     665    { 
     666        try 
     667        { 
     668            for (File file : files) 
     669            { 
     670                System.err.println(file + "  " + pixelsId); 
     671                Parameters p = new Parameters(); 
     672                p.addId(pixelsId); 
     673                p.addString("path", file.getAbsolutePath()); 
     674                OriginalFile o = iQuery.findByQuery( 
     675                        "select ofile from OriginalFile as ofile left join " + 
     676                        "ofile.pixelsFileMaps as pfm left join pfm.child as child " + 
     677                        "where child.id = :id and ofile.path =:path", p); 
     678                 
     679                if (o == null) throw  
     680                    new FileNotFoundException("Unable to look up originalFile"); 
     681                 
     682                rawFileStore.setFileId(o.getId()); 
     683                 
     684                byte[] buf = new byte[262144];             
     685                FileInputStream stream = new FileInputStream(file); 
     686 
     687                long time = System.currentTimeMillis(); 
     688                long pos = 0; 
     689                int rlen; 
     690                while((rlen = stream.read(buf)) > 0) 
     691                { 
     692                    rawFileStore.write(buf, pos, rlen); 
     693                    pos += rlen; 
     694                    ByteBuffer nioBuffer = ByteBuffer.wrap(buf); 
     695                    nioBuffer.limit(rlen); 
     696                } 
     697 
     698                System.err.println(System.currentTimeMillis() - time); 
     699            } 
     700             
     701        } catch (Exception e) 
     702        { 
     703            e.printStackTrace();    
     704        } 
     705            
     706    } 
    637707} 
  • branches/bioformats-omero/src/ome/formats/importer/About.java

    r1043 r1066  
    3535 
    3636import java.awt.Component; 
    37 import java.awt.Toolkit; 
    3837import java.io.BufferedReader; 
    3938import java.io.IOException; 
    4039import java.io.InputStream; 
    4140import java.io.InputStreamReader; 
    42 import java.net.URL; 
    4341 
    44 import javax.swing.JFrame; 
    4542import javax.swing.JOptionPane; 
    4643 
    … …  
    5653 
    5754    private static String msg; 
    58  
    59     private static JFrame frame; 
    6055 
    6156    public static void show(Component c) 
  • branches/bioformats-omero/src/ome/formats/importer/FileQueueChooser.java

    r1020 r1066  
    33import java.awt.Component; 
    44import java.awt.Container; 
    5 import java.awt.FileDialog; 
    65import java.awt.event.InputEvent; 
    76import java.awt.event.MouseEvent; 
    87import java.awt.event.MouseListener; 
    9 import java.awt.event.MouseMotionListener; 
    108import java.io.File; 
    11 import java.util.ArrayList; 
    129import java.util.Stack; 
    1310import java.util.Vector; 
    … …  
    4138    private Component fileList = null; 
    4239     
    43     private Boolean inSetSelect = true; 
    44      
    4540    ImageReader reader = new ImageReader(); 
    4641     
    … …  
    6661         
    6762         
    68         FileFilter[] ff = new FileFilter[readerFFSize + 5]; 
     63        FileFilter[] ff = new FileFilter[readerFFSize + 6]; 
    6964        System.arraycopy(ComboFileFilter.sortFilters( 
    7065                reader.getFileFilters()), 0, ff, 0, readerFFSize); 
    … …  
    7469        ff[readerFFSize + 3] = new D3DNewFileFilter(); 
    7570        ff[readerFFSize + 4] = new D3DOldFileFilter(); 
    76          
    77          
    78          
    79          
    80          
     71        ff[readerFFSize + 5] = new D3DNPrjFileFilter(); 
     72 
    8173        //ff = ComboFileFilter.sortFilters(ff); 
    8274        FileFilter combo = null; 
    … …  
    233225    } 
    234226     
     227    class D3DNPrjFileFilter extends javax.swing.filechooser.FileFilter 
     228    { 
     229        @Override 
     230        public boolean accept(File f) 
     231        { 
     232           return f.isDirectory() || f.getName().toLowerCase().endsWith("_prj.dv"); 
     233        } 
     234 
     235        @Override 
     236        public String getDescription() 
     237        { 
     238            return "Deltavision Files - Projected (*_prj.dv)"; 
     239        }   
     240    } 
     241   
    235242    // ----- Main class used for testing ------     
    236243     
  • branches/bioformats-omero/src/ome/formats/importer/FileQueueHandler.java

    r1053 r1066  
    3939import java.util.prefs.Preferences; 
    4040 
     41import javax.swing.JCheckBox; 
     42import javax.swing.JFileChooser; 
    4143import javax.swing.JFrame; 
    4244import javax.swing.JOptionPane; 
    … …  
    4648 
    4749import loci.formats.ChannelSeparator; 
    48 import loci.formats.FormatException; 
    4950import loci.formats.ImageReader; 
    5051 
    … …  
    5354 
    5455 
     56@SuppressWarnings("serial") 
    5557public class FileQueueHandler  
    5658    extends JPanel  
    … …  
    6365    private String savedDirectory = userPrefs.get("savedDirectory", ""); 
    6466     
     67    @SuppressWarnings("unused") 
    6568    private ImportHandler       importHandler; 
    6669    private OMEROMetadataStore  store; 
    … …  
    111114         
    112115        //If the directory changed, don't show an image. 
    113         if (action.equals(fileChooser.APPROVE_SELECTION)) { 
     116        if (action.equals(JFileChooser.APPROVE_SELECTION)) { 
    114117            try { 
    115118                file = fileChooser.getSelectedFile(); 
    … …  
    132135                    addFileToQueue(file, dialog.dataset, 
    133136                            dialog.dataset.getName(), dialog.project.getName(),  
    134                             dialog.useFullPath, dialog.numOfDirectories); 
     137                            dialog.useFullPath, dialog.numOfDirectories,  
     138                            dialog.archiveImage.isSelected()); 
    135139                } else {  
    136140                    JOptionPane.showMessageDialog(viewer,  
    137141                        "Due to an error the application is unable to \n" + 
    138                         "retrieve an OMEROMetadataStore and can't continue"); 
     142                        "retrieve an OMEROMetadataStore and cannot continue." + 
     143                        "The most likely cause for this error is that you" + 
     144                        "are not logged in. Please try to login again."); 
    139145                } 
    140146            } catch (Exception ex) {  
    … …  
    168174                } 
    169175 
     176                 
     177                if (fileSelected != true) 
     178                { 
     179                    JOptionPane.showMessageDialog(viewer,  
     180                            "You must select at least one importable file to\n" + 
     181                            "add to the import queue. Choose an image in the\n" + 
     182                            "left-hand panel first before continuing."); 
     183                    return; 
     184                } 
     185                 
    170186                if (fileSelected == true && store != null) 
    171187                { 
    … …  
    181197                                    dialog.project.getName(), 
    182198                                    dialog.useFullPath,  
    183                                     dialog.numOfDirectories); 
     199                                    dialog.numOfDirectories, 
     200                                    dialog.archiveImage.isSelected()); 
    184201                     } 
    185202                } else { 
    186203                    JOptionPane.showMessageDialog(viewer,  
    187204                            "Due to an error the application is unable to \n" + 
    188                     "retrieve an OMEROMetadataStore and can't continue"); 
     205                            "retrieve an OMEROMetadataStore and cannot continue." + 
     206                            "The most likely cause for this error is that you" + 
     207                            "are not logged in. Please try to login again."); 
    189208                } 
    190209            } catch (Exception ex) {  
    … …  
    196215        { 
    197216            try { 
    198                 if (qTable.importBtn.isEnabled()) 
    199                 { 
    200                     rows = qTable.queue.getSelectedRows(); 
    201  
    202                     while (rows.length > 0) 
     217 
     218                rows = qTable.queue.getSelectedRows();    
     219 
     220                if (rows.length == 0) 
     221                { 
     222                    JOptionPane.showMessageDialog(viewer,  
     223                            "You must select at least one file in the queue to\n" + 
     224                            "remove. Choose an image in the right-hand panel \n" + 
     225                    "first before removing."); 
     226                    return; 
     227                } 
     228 
     229                while (rows.length > 0) 
     230                { 
     231                    if (qTable.queue.getValueAt(rows[0], 2) == "added") 
    203232                    { 
    204                         if (qTable.queue.getValueAt(rows[0], 2) == "added") 
    205                         { 
    206                             removeFileFromQueue(rows[0]); 
    207                             rows = qTable.queue.getSelectedRows();                     
    208                         } 
    209                     }                 
    210                 } 
     233                        removeFileFromQueue(rows[0]); 
     234                        rows = qTable.queue.getSelectedRows();                     
     235                    } 
     236                }                 
    211237            } catch (Exception ex) {  
    212238                ex.printStackTrace(); 
    … …  
    244270            } 
    245271        } 
    246         if (prop.equals(fileChooser.DIRECTORY_CHANGED_PROPERTY)) 
     272        if (prop.equals(JFileChooser.DIRECTORY_CHANGED_PROPERTY)) 
    247273        { 
    248274            savedDirectory = fileChooser.getCurrentDirectory().getAbsolutePath(); 
    … …  
    252278     
    253279    
     280    @SuppressWarnings("unchecked") 
    254281    private void addFileToQueue(File file, Dataset dataset, String dName,  
    255             String project, Boolean useFullPath, int numOfDirectories) 
     282            String project, Boolean useFullPath,  
     283            int numOfDirectories, boolean archiveImage) 
    256284    { 
    257285        Vector row = new Vector(); 
    … …  
    264292        row.add(dataset); 
    265293        row.add(file); 
     294        row.add(archiveImage); 
    266295        qTable.table.addRow(row);  
    267296        if (qTable.table.getRowCount() == 1) 
    … …  
    272301    { 
    273302       if (useFullPath == true) return file.toString(); 
    274        else if (numOfDirectories == 0) return file.getName(); 
    275        else return file.getName(); 
    276     } 
    277  
    278      
     303       else if (numOfDirectories == 0) return file.getName();       
     304       else  
     305       { 
     306           String[] directories = splitDirectories(file); 
     307           if (numOfDirectories > directories.length - 1)  
     308               numOfDirectories = directories.length - 1; 
     309            
     310           int start = directories.length - numOfDirectories - 1; 
     311            
     312           String fileName = ""; 
     313                
     314           for (int i = start; i < directories.length - 1; i++) 
     315           { 
     316               if (directories[i].length() != 0) 
     317                   fileName = fileName + File.separator + directories[i]; 
     318           } 
     319 
     320           fileName = fileName + File.separator + file.getName();            
     321           return fileName; 
     322       } 
     323    } 
     324 
     325    // Split the directories by file seperator character ("/" or "\") 
    279326    private String[] splitDirectories(File file) 
    280327    { 
    281         String[] fields = file.getPath().split(File.pathSeparator); 
     328        String[] fields = file.getAbsolutePath().split(File.separator); 
    282329         
    283330        return fields; 
  • branches/bioformats-omero/src/ome/formats/importer/FileQueueTable.java

    r1053 r1066  
    140140            .addListSelectionListener(listener); 
    141141         
    142         // Hide 3 and 4th columns 
     142        // Hide 3rd to 5th columns 
    143143        TableColumnModel tcm = queue.getColumnModel(); 
    144144        TableColumn datasetColumn = tcm.getColumn(3); 
    … …  
    146146        TableColumn pathColumn = tcm.getColumn(3); 
    147147        tcm.removeColumn(pathColumn); 
     148        TableColumn archiveColumn = tcm.getColumn(3); 
     149        tcm.removeColumn(archiveColumn); 
    148150         
    149151         
    … …  
    178180    } 
    179181     
    180     public void setProgress(int step) 
     182    public void setImportProgress(int step) 
    181183    { 
    182184        String text = step + "/" + maxPlanes; 
    … …  
    184186    } 
    185187     
     188    public void setProgressPrepping(int row) 
     189    { 
     190        table.setValueAt("prepping", row, 2);  
     191    } 
     192 
    186193    public void setProgressDone(int row) 
    187194    { 
    188195        table.setValueAt("done", row, 2);  
     196    } 
     197     
     198    public void setProgressArchiving(int row) 
     199    { 
     200        table.setValueAt("archiving", row, 2); 
    189201    } 
    190202     
    … …  
    222234        { 
    223235            try { 
     236                boolean archive = (Boolean) table.getValueAt(i, 5); 
    224237                File file = new File(table.getValueAt(i, 4).toString()); 
    225238                Dataset dataset = (Dataset) table.getValueAt(i, 3); 
    226239                String imageName = table.getValueAt(i, 0).toString(); 
    227                 fads[i] = new ImportContainer(file, dataset, imageName);            } 
     240                fads[i] = new ImportContainer(file, dataset, imageName, archive);            } 
    228241            catch (ArrayIndexOutOfBoundsException e) { 
    229242                e.printStackTrace(); 
    … …  
    233246        return fads; 
    234247    } 
    235      
     248 
    236249    public void actionPerformed(ActionEvent e) 
    237250    { 
    … …  
    258271         
    259272        private static final long serialVersionUID = 1L; 
    260         private String[] columnNames = {"Files in Queue", "Project/Dataset", "Status", "DatasetNum", "Path"}; 
     273        private String[] columnNames = {"Files in Queue", "Project/Dataset", "Status", "DatasetNum", "Path", "Archive"}; 
    261274 
    262275        public void tableChanged(TableModelEvent arg0) { } 
    … …  
    311324    } 
    312325     
     326    @SuppressWarnings("serial") 
    313327    class LeftDotRenderer  
    314328        extends DefaultTableCellRenderer 
    … …  
    327341            String cellText = getText(); 
    328342            FontMetrics fm = getFontMetrics( getFont() ); 
     343            // Set tool tip if desired 
    329344  
    330345            if (fm.stringWidth(cellText) > availableWidth) 
    … …  
    345360                setText( dots + cellText.substring(nChars + 1) ); 
    346361            } 
    347   
     362 
    348363            setFont(UIManager.getFont("TableCell.font")); 
    349              
     364            
    350365            return this; 
    351366        } 
    … …  
    367382            setFont(UIManager.getFont("TableCell.font")); 
    368383            setHorizontalAlignment(DefaultTableCellRenderer.CENTER); 
     384            // Set tool tip if desired 
     385            setToolTipText((String)value); 
    369386             
    370387            // Since the renderer is a component, return itself 
    … …  
    405422        private void dselectRow(int first, int last) 
    406423        { 
    407             for (int i = first; i <= last; i++ ) 
     424            for (int i = first; i < last; i++ ) 
    408425            { 
    409426                try 
    410427                { 
     428                    //System.err.println("first: " + first +  
     429                    //    " last: " + last + " i: " + i); 
    411430                    if (!table.getValueAt(i, 2).equals("added")  
    412431                            && table.getSelectionModel().isSelectedIndex(i)) 
  • branches/bioformats-omero/src/ome/formats/importer/ImportContainer.java

    r1053 r1066  
    1111        public Dataset dataset;  
    1212        public String imageName; 
     13        public boolean archive; 
    1314         
    14         ImportContainer(File file, Dataset dataset, String imageName) 
     15        ImportContainer(File file, Dataset dataset, String imageName, boolean archive2) 
    1516        { 
    1617            this.file = file; 
    1718            this.dataset = dataset; 
    1819            this.imageName = imageName; 
     20            this.archive = archive2; 
    1921        } 
    2022} 
  • branches/bioformats-omero/src/ome/formats/importer/ImportDialog.java

    r1053 r1066  
    4747import javax.swing.ButtonGroup; 
    4848import javax.swing.JButton; 
     49import javax.swing.JCheckBox; 
    4950import javax.swing.JComboBox; 
    5051import javax.swing.JDialog; 
    … …  
    8485    public int numOfDirectories; 
    8586     
     87    public JCheckBox archiveImage; 
     88     
    8689    JButton           cancelBtn; 
    8790    JButton           importBtn; 
    … …  
    119122        setModal(modal); 
    120123        setResizable(false); 
    121         setSize(new Dimension(300, 280)); 
     124        setSize(new Dimension(300, 300)); 
    122125        setLocationRelativeTo(owner); 
    123126 
    … …  
    140143        JPanel namedPanel = addNamedPanel(this, " File Naming ", c, 0, 4, 1.0f); 
    141144 
    142         fullPathButton = addRadioButton("Use the full path name", c); 
    143         partPathButton = addRadioButton("Use the file name", c); 
     145        fullPathButton = addRadioButton("Use the full path + file name", c); 
     146        partPathButton = addRadioButton("Use just the file name and include", c); 
    144147 
    145148        ButtonGroup group = new ButtonGroup(); 
    146149        group.add(fullPathButton); 
    147150        group.add(partPathButton); 
    148          
     151        
    149152        group.setSelected(fullPathButton.getModel(), true); 
    150153 
    … …  
    152155        namedPanel.add(partPathButton, c); 
    153156 
    154         JPanel plainPanel = addPlainPanel(namedPanel, c); 
     157       JPanel plainPanel = addPlainPanel(namedPanel, c); 
    155158        numOfDirectoriesField = addEntryField(plainPanel,