Changeset f6a2d3c


Ignore:
Timestamp:
Jul 15, 2010, 5:29:08 PM (8 years ago)
Author:
Michael Seifert <mseifert@…>
Branches:
master
Children:
61a149d
Parents:
05b3ea1
Message:

Removal of indexed objects is now supported;

Added popup menu to the replay table, where the user can delete the selected replay from the storage

Location:
src/main/java/de/erichseifert/warp
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • src/main/java/de/erichseifert/warp/WARP.java

    r05b3ea1 rf6a2d3c  
    159159        }
    160160
     161        public void remove(long id) {
     162                storage.delete(id);
     163        }
     164
    161165        public Set<ReplayDescriptor> search(Map<String, Object> query, Map<String, Range> ranges, SearchMode mode) {
    162166                return storage.search(query, ranges, mode);
  • src/main/java/de/erichseifert/warp/gui/ReplayParserGUI.java

    r05b3ea1 rf6a2d3c  
    3131import java.awt.event.ActionEvent;
    3232import java.awt.event.ActionListener;
     33import java.awt.event.MouseAdapter;
     34import java.awt.event.MouseEvent;
    3335import java.io.File;
    3436import java.io.IOException;
     
    5355import javax.swing.JOptionPane;
    5456import javax.swing.JPanel;
     57import javax.swing.JPopupMenu;
    5558import javax.swing.JProgressBar;
    5659import javax.swing.JScrollPane;
     
    216219                aboutAction.putValue(Action.NAME, "About...");
    217220
     221                Action deleteReplay = new AbstractAction() {
     222                        @Override
     223                        public void actionPerformed(ActionEvent e) {
     224                                // TODO open confirm dialog
     225                                int row = replayTable.getSelectedRow();
     226                                ReplayDescriptor descriptor = (ReplayDescriptor) replayTable.getValueAt(row, 0);
     227                                ReplayParserGUI.this.warp.remove(descriptor.getId());
     228                        }
     229                };
     230                deleteReplay.putValue(Action.NAME, "Delete replay");
     231
    218232                // Menu bar
    219233                JMenuBar menuBar = new JMenuBar();
     
    364378                splitPane.add(replayTableScroller, JSplitPane.RIGHT);
    365379
     380                // Table popup menu
     381                final JPopupMenu replayTablePopup = new JPopupMenu();
     382                replayTablePopup.add(new JMenuItem(deleteReplay));
     383                replayTable.addMouseListener(new MouseAdapter() {
     384                        @Override
     385                        public void mouseClicked(MouseEvent e) {
     386                                if (e.isPopupTrigger()) {
     387                                        replayTablePopup.show(e.getComponent(), e.getX(), e.getY());
     388                                }
     389                        }
     390
     391                        @Override
     392                        public void mousePressed(MouseEvent e) {
     393                                if (e.isPopupTrigger()) {
     394                                        replayTablePopup.show(e.getComponent(), e.getX(), e.getY());
     395                                }
     396                        }
     397                });
    366398                JPanel statusPanel = new JPanel(new GridLayout(2, 1));
    367399                getContentPane().add(statusPanel, BorderLayout.SOUTH);
     
    386418                if (evt.getType() == EventType.ADD) {
    387419                        replayTableModel.addRow(descriptorToRow(evt.getDescriptorNew()));
    388                 } else if (evt.getType() == EventType.REMOVE) {
     420                }
     421                else if (evt.getType() == EventType.REMOVE) {
    389422                        for (int i = 0; i < replayTableModel.getRowCount(); i++) {
    390                                 File replayFile = (File) replayTableModel.getValueAt(i, 0);
    391                                 if (replayFile == evt.getDescriptorOld().getFile()) {
     423                                ReplayDescriptor descriptor = (ReplayDescriptor) replayTableModel.getValueAt(i, 0);
     424                                if (descriptor == evt.getDescriptorOld()) {
    392425                                        replayTableModel.removeRow(i);
    393426                                        break;
  • src/main/java/de/erichseifert/warp/io/SerializingStorage.java

    r05b3ea1 rf6a2d3c  
    250250                initIndexer();
    251251
     252                super.delete(ids);
     253
    252254                for (long id : ids) {
    253255                        ReplayDescriptor descriptor = load(id).get(0);
     
    258260                        descriptorsById.remove(descriptor.getId());
    259261                }
    260 
    261                 super.delete(ids);
    262262
    263263                // Serialize replay descriptors
  • src/main/java/de/erichseifert/warp/io/search/DefaultReplayIndexer.java

    r05b3ea1 rf6a2d3c  
    171171
    172172        private void removeIndex(Replay replay) {
     173                Node node = hierarchy.remove("#replay", replay.getDescriptor().getId());
    173174                for (Index index : indices.values()) {
    174                         Node node = hierarchy.remove("#replay", replay.getDescriptor().getId());
    175175                        index.unindex(node);
    176176                }
  • src/main/java/de/erichseifert/warp/io/search/indices/AbstractIndex.java

    r05b3ea1 rf6a2d3c  
    2424import java.util.HashMap;
    2525import java.util.HashSet;
     26import java.util.Iterator;
    2627import java.util.Map;
    2728import java.util.Set;
     
    9293         * @param hierarchy Indexing hierarchy.
    9394         */
    94         protected void remove(Object value, Node node) {
    95                 Set<Node> nodes = indexedValues.get(value);
    96                 if (nodes == null) {
    97                         return;
    98                 }
    99                 nodes.remove(node);
     95        protected void remove(Node node) {
     96                Iterator<Map.Entry<Object, Set<Node>>> indexedValuesIter = indexedValues.entrySet().iterator();
     97                while (indexedValuesIter.hasNext()) {
     98                        Map.Entry<Object, Set<Node>> entry = indexedValuesIter.next();
     99                        Set<Node> nodes = entry.getValue();
     100                        Iterator<Node> nodesIter = nodes.iterator();
     101                        while (nodesIter.hasNext()) {
     102                                Node n = nodesIter.next();
     103                                if (n.getPath().contains(node)) {
     104                                        nodesIter.remove();
     105                                        break;
     106                                }
     107                        }
    100108
    101                 if (nodes.isEmpty()) {
    102                         indexedValues.remove(value);
     109                        if (nodes.isEmpty()) {
     110                                indexedValuesIter.remove();
     111                        }
    103112                }
    104113        }
  • src/main/java/de/erichseifert/warp/io/search/indices/FieldIndex.java

    r05b3ea1 rf6a2d3c  
    6767                        return;
    6868                }
    69                 Object value = getValue(node);
    70                 remove(value, node);
     69                remove(node);
    7170        }
    7271
  • src/main/java/de/erichseifert/warp/io/search/indices/FullTextIndex.java

    r05b3ea1 rf6a2d3c  
    8383                        return;
    8484                }
    85                 Object value = getValue(node);
    86                 String[] normalizedValue = normalize(value.toString());
    87                 for (String part : normalizedValue) {
    88                         remove(part, node);
    89                 }
     85                remove(node);
    9086        }
    9187
Note: See TracChangeset for help on using the changeset viewer.