Package com.pixelmed.display

## Class DicomCleaner

- java.lang.Object
- - java.awt.Component
  - - java.awt.Container
    - - java.awt.Window
      - - java.awt.Frame
        - - javax.swing.JFrame
          - - com.pixelmed.display.ApplicationFrame
            - - com.pixelmed.display.DicomCleaner

- All Implemented Interfaces:
    `java.awt.image.ImageObserver`, `java.awt.MenuContainer`, `java.io.Serializable`, `javax.accessibility.Accessible`, `javax.swing.RootPaneContainer`, `javax.swing.WindowConstants`

      public class DicomCleaner
      extends ApplicationFrame

  This class is an application for importing or retrieving DICOM studies, cleaning them (i.e., de-identifying them or replacing UIDs, etc.), and sending them elsewhere.

  It is configured by use of a properties file that resides in the user's home directory in `.com.pixelmed.display.DicomCleaner.properties`.

  It supports import and network retrieval of uncompressed, deflate and bzip compressed, and baseline JPEG compressed images (but not yet other encapsulated compressed pixel data).

  See Also:
    Serialized Form

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `protected class` | `DicomCleaner.BlackoutActionListener` |
    `protected class` | `DicomCleaner.CancelActionListener` |
    `protected class` | `DicomCleaner.CleanActionListener` |
    `protected class` | `DicomCleaner.CleanWorker` |
    `protected class` | `DicomCleaner.ConfigureActionListener` |
    `protected class` | `DicomCleaner.DefaultYearActionListener` |
    `protected class` | `DicomCleaner.EarliestYearActionListener` |
    `protected class` | `DicomCleaner.ExportActionListener` |
    `protected class` | `DicomCleaner.ExportWorker` |
    `protected class` | `DicomCleaner.ImportActionListener` |
    `protected class` | `DicomCleaner.ImportWorker` |
    `protected class` | `DicomCleaner.LogActionListener` |
    `protected class` | `DicomCleaner.OurDestinationDatabaseTreeBrowser` |
    `protected class` | `DicomCleaner.OurDicomImageBlackout` |
    `protected class` | `DicomCleaner.OurMediaImporter` |
    `protected class` | `DicomCleaner.OurMultipleInstanceTransferStatusHandler` |
    `protected class` | `DicomCleaner.OurQueryTreeBrowser` |
    `protected class` | `DicomCleaner.OurReceivedObjectHandler` |
    `protected class` | `DicomCleaner.OurSourceDatabaseTreeBrowser` |
    `protected class` | `DicomCleaner.PurgeActionListener` |
    `protected class` | `DicomCleaner.PurgeWorker` |
    `protected class` | `DicomCleaner.QueryActionListener` |
    `protected class` | `DicomCleaner.QueryWorker` |
    `protected class` | `DicomCleaner.RandomYearActionListener` |
    `protected class` | `DicomCleaner.RetrieveActionListener` |
    `protected class` | `DicomCleaner.RetrieveWorker` |
    `protected class` | `DicomCleaner.SendActionListener` |
    `protected class` | `DicomCleaner.SendWorker` |

    - ### Nested classes/interfaces inherited from class javax.swing.JFrame

      `javax.swing.JFrame.AccessibleJFrame`

    - ### Nested classes/interfaces inherited from class java.awt.Frame

      `java.awt.Frame.AccessibleAWTFrame`

    - ### Nested classes/interfaces inherited from class java.awt.Window

      `java.awt.Window.AccessibleAWTWindow, java.awt.Window.Type`

    - ### Nested classes/interfaces inherited from class java.awt.Container

      `java.awt.Container.AccessibleAWTContainer`

    - ### Nested classes/interfaces inherited from class java.awt.Component

      `java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy`

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected javax.swing.JCheckBox` | `acceptAnyTransferSyntaxCheckBox` |
    `protected javax.swing.JCheckBox` | `addContributingEquipmentCheckBox` |
    `protected javax.swing.JCheckBox` | `cleanUIDsCheckBox` |
    `protected DatabaseTreeRecord[]` | `currentDestinationDatabaseSelections` |
    `protected java.util.Vector` | `currentDestinationFilePathSelections` |
    `protected QueryInformationModel` | `currentRemoteQueryInformationModel` |
    `protected java.lang.String` | `currentRemoteQuerySelectionLevel` |
    `protected QueryTreeRecord` | `currentRemoteQuerySelectionQueryTreeRecord` |
    `protected java.lang.String` | `currentRemoteQuerySelectionRetrieveAE` |
    `protected Attribute` | `currentRemoteQuerySelectionUniqueKey` |
    `protected AttributeList` | `currentRemoteQuerySelectionUniqueKeys` |
    `protected DatabaseTreeRecord[]` | `currentSourceDatabaseSelections` |
    `protected java.util.Vector` | `currentSourceFilePathSelections` |
    `protected SafeCursorChanger` | `cursorChanger` |
    `protected DatabaseInformationModel` | `dstDatabase` |
    `protected javax.swing.JPanel` | `dstDatabasePanel` |
    `protected java.util.Map<java.lang.String,​java.util.Date>` | `earliestDatesIndexedBySourceFilePath` |
    `protected java.lang.String` | `exportDirectoryPath` |
    `protected static java.lang.String` | `exportedZipFileName` |
    `protected static java.lang.String` | `filePrefixForDicomInstanceFilesOnInterchangeMedia` |
    `protected static java.lang.String` | `fileSuffixForDicomInstanceFilesOnInterchangeMedia` |
    `protected javax.swing.JCheckBox` | `hierarchicalExportCheckBox` |
    `protected java.lang.String` | `importDirectoryPath` |
    `protected MessageLogger` | `logger` |
    `protected javax.swing.JCheckBox` | `modifyDatesCheckBox` |
    `protected javax.swing.JTextField` | `modifyDatesTextField` |
    `protected static java.lang.String` | `nameForDicomDirectoryOnInterchangeMedia` |
    `protected NetworkApplicationInformation` | `networkApplicationInformation` |
    `protected NetworkApplicationProperties` | `networkApplicationProperties` |
    `protected java.lang.String` | `ourCalledAETitle` |
    `protected SafeProgressBarUpdaterThread` | `progressBarUpdater` |
    `protected static java.lang.String` | `propertiesFileName` |
    `protected static java.lang.String` | `propertyName_DicomCurrentlySelectedQueryTargetAE` |
    `protected static java.lang.String` | `propertyName_DicomCurrentlySelectedStorageTargetAE` |
    `protected javax.swing.JTextField` | `queryFilterAccessionNumberTextField` |
    `protected javax.swing.JTextField` | `queryFilterPatientIDTextField` |
    `protected javax.swing.JTextField` | `queryFilterPatientNameTextField` |
    `protected javax.swing.JTextField` | `queryFilterStudyDateTextField` |
    `protected javax.swing.JPanel` | `remoteQueryRetrievePanel` |
    `protected javax.swing.JCheckBox` | `removeCharacteristicsCheckBox` |
    `protected javax.swing.JCheckBox` | `removeClinicalTrialAttributesCheckBox` |
    `protected javax.swing.JCheckBox` | `removeDescriptionsCheckBox` |
    `protected javax.swing.JCheckBox` | `removeDeviceIdentityCheckBox` |
    `protected javax.swing.JCheckBox` | `removeIdentityCheckBox` |
    `protected javax.swing.JCheckBox` | `removeInstitutionIdentityCheckBox` |
    `protected javax.swing.JCheckBox` | `removePrivateCheckBox` |
    `protected javax.swing.JCheckBox` | `removeProtocolNameCheckBox` |
    `protected javax.swing.JCheckBox` | `removeSeriesDescriptionsCheckBox` |
    `protected javax.swing.JCheckBox` | `replaceAccessionNumberCheckBox` |
    `protected javax.swing.JTextField` | `replacementAccessionNumberTextField` |
    `protected javax.swing.JTextField` | `replacementPatientIDTextField` |
    `protected javax.swing.JTextField` | `replacementPatientNameTextField` |
    `protected javax.swing.JCheckBox` | `replacePatientIDCheckBox` |
    `protected javax.swing.JCheckBox` | `replacePatientNameCheckBox` |
    `protected java.util.ResourceBundle` | `resourceBundle` |
    `protected static java.lang.String` | `resourceBundleName` |
    `protected static java.lang.String` | `rootNameForDicomInstanceFilesOnInterchangeMedia` |
    `protected java.io.File` | `savedImagesFolder` |
    `protected DatabaseInformationModel` | `srcDatabase` |
    `protected javax.swing.JPanel` | `srcDatabasePanel` |
    `protected StorageSOPClassSCPDispatcher` | `storageSOPClassSCPDispatcher` |
    `protected static int` | `textFieldLengthForModifyDates` |
    `protected static int` | `textFieldLengthForQueryAccessionNumber` |
    `protected static int` | `textFieldLengthForQueryPatientID` |
    `protected static int` | `textFieldLengthForQueryPatientName` |
    `protected static int` | `textFieldLengthForQueryStudyDate` |
    `protected static int` | `textFieldLengthForReplacementAccessionNumber` |
    `protected static int` | `textFieldLengthForReplacementPatientID` |
    `protected static int` | `textFieldLengthForReplacementPatientName` |
    `protected javax.swing.JCheckBox` | `zipExportCheckBox` |

    - ### Fields inherited from class com.pixelmed.display.ApplicationFrame

      `statusBarManager`

    - ### Fields inherited from class javax.swing.JFrame

      `accessibleContext, rootPane, rootPaneCheckingEnabled`

    - ### Fields inherited from class java.awt.Frame

      `CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR`

    - ### Fields inherited from class java.awt.Component

      `BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`

    - ### Fields inherited from interface java.awt.image.ImageObserver

      `ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

    - ### Fields inherited from interface javax.swing.WindowConstants

      `DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_ON_CLOSE, HIDE_ON_CLOSE`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `DicomCleaner()` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected void` | `activateStorageSCP()` | Start DICOM storage listener for populating source database.
    `protected void` | `activateTemporaryDatabases()` | Start two databases, one for the "source" instances and one for the "target" instances.
    `protected boolean` | `copyFromOriginalToCleanedPerformingAction​(java.util.Vector paths, java.util.Date earliestDateInSet, MessageLogger logger, SafeProgressBarUpdaterThread progressBarUpdater)` |
    `protected static java.util.Date` | `findEarliestDate​(java.util.Map<java.lang.String,​java.util.Date> earliestDatesIndexedBySourceFilePath, java.util.Vector<java.lang.String> sourceFilePathSelections)` |
    `protected static void` | `importFileIntoDatabase​(DatabaseInformationModel database, java.lang.String dicomFileName, java.lang.String fileReferenceType, java.util.Map<java.lang.String,​java.util.Date> earliestDatesIndexedBySourceFilePath)` |
    `static void` | `main​(java.lang.String[] arg)` | The method to invoke the application.
    `protected java.lang.String` | `makeNewFullyQualifiedHierarchicalInstancePathName​(java.lang.String sourceFileName)` |
    `protected java.lang.String` | `makeNewFullyQualifiedInterchangeMediaInstancePathName​(int fileCount)` |
    `protected void` | `performRetrieve​(AttributeList uniqueKeys, java.lang.String selectionLevel, java.lang.String retrieveAE)` |
    `protected void` | `purgeFilesAndDatabaseInformation​(DatabaseTreeRecord[] databaseSelections, MessageLogger logger, SafeProgressBarUpdaterThread progressBarUpdater, int done, int maximum)` |
    `protected void` | `purgeFilesAndDatabaseInformation​(DatabaseTreeRecord databaseSelection, MessageLogger logger, SafeProgressBarUpdaterThread progressBarUpdater, int done, int maximum)` |
    `protected void` | `setCurrentRemoteQueryInformationModel​(java.lang.String remoteAEForQuery)` |
    `protected void` | `setCurrentRemoteQuerySelection​(AttributeList uniqueKeys, Attribute uniqueKey, AttributeList identifier)` |

    - ### Methods inherited from class com.pixelmed.display.ApplicationFrame

      `createGUI, getApplicationPropertyFileName, getBuildDate, getProperties, getPropertyInsistently, getPropertyInsistently, getReleaseString, getStatusBar, loadProperties, makePathToFileInUsersHomeDirectory, setApplicationPropertyFileName, setBackgroundForGUI, setInternationalizedFontsForGUI, setPreferredLookAndFeelForPlatform, storeProperties, takeSnapShot`

    - ### Methods inherited from class javax.swing.JFrame

      `addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update`

    - ### Methods inherited from class java.awt.Frame

      `addNotify, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setBackground, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setOpacity, setResizable, setShape, setState, setTitle, setUndecorated`

    - ### Methods inherited from class java.awt.Window

      `addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBackground, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOpacity, getOwnedWindows, getOwner, getOwnerlessWindows, getShape, getToolkit, getType, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isAutoRequestFocus, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isOpaque, isShowing, isValidateRoot, pack, paint, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setAutoRequestFocus, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocation, setLocation, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setType, setVisible, show, toBack, toFront`

    - ### Methods inherited from class java.awt.Container

      `add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusDownCycle, validate, validateTree`

    - ### Methods inherited from class java.awt.Component

      `action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, requestFocusInWindow, resize, resize, revalidate, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setMaximumSize, setMixingCutoutShape, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface java.awt.MenuContainer

      `getFont, postEvent`

- - ### Field Detail

    - #### resourceBundleName

          protected static java.lang.String resourceBundleName

    - #### propertiesFileName

          protected static java.lang.String propertiesFileName

    - #### propertyName_DicomCurrentlySelectedStorageTargetAE

          protected static java.lang.String propertyName_DicomCurrentlySelectedStorageTargetAE

    - #### propertyName_DicomCurrentlySelectedQueryTargetAE

          protected static java.lang.String propertyName_DicomCurrentlySelectedQueryTargetAE

    - #### rootNameForDicomInstanceFilesOnInterchangeMedia

          protected static java.lang.String rootNameForDicomInstanceFilesOnInterchangeMedia

    - #### filePrefixForDicomInstanceFilesOnInterchangeMedia

          protected static java.lang.String filePrefixForDicomInstanceFilesOnInterchangeMedia

    - #### fileSuffixForDicomInstanceFilesOnInterchangeMedia

          protected static java.lang.String fileSuffixForDicomInstanceFilesOnInterchangeMedia

    - #### nameForDicomDirectoryOnInterchangeMedia

          protected static java.lang.String nameForDicomDirectoryOnInterchangeMedia

    - #### exportedZipFileName

          protected static java.lang.String exportedZipFileName

    - #### textFieldLengthForQueryPatientName

          protected static int textFieldLengthForQueryPatientName

    - #### textFieldLengthForQueryPatientID

          protected static int textFieldLengthForQueryPatientID

    - #### textFieldLengthForQueryStudyDate

          protected static int textFieldLengthForQueryStudyDate

    - #### textFieldLengthForQueryAccessionNumber

          protected static int textFieldLengthForQueryAccessionNumber

    - #### textFieldLengthForReplacementPatientName

          protected static int textFieldLengthForReplacementPatientName

    - #### textFieldLengthForReplacementPatientID

          protected static int textFieldLengthForReplacementPatientID

    - #### textFieldLengthForReplacementAccessionNumber

          protected static int textFieldLengthForReplacementAccessionNumber

    - #### textFieldLengthForModifyDates

          protected static int textFieldLengthForModifyDates

    - #### resourceBundle

          protected java.util.ResourceBundle resourceBundle

    - #### srcDatabase

          protected DatabaseInformationModel srcDatabase

    - #### dstDatabase

          protected DatabaseInformationModel dstDatabase

    - #### srcDatabasePanel

          protected javax.swing.JPanel srcDatabasePanel

    - #### dstDatabasePanel

          protected javax.swing.JPanel dstDatabasePanel

    - #### remoteQueryRetrievePanel

          protected javax.swing.JPanel remoteQueryRetrievePanel

    - #### removeIdentityCheckBox

          protected javax.swing.JCheckBox removeIdentityCheckBox

    - #### removeDescriptionsCheckBox

          protected javax.swing.JCheckBox removeDescriptionsCheckBox

    - #### removeSeriesDescriptionsCheckBox

          protected javax.swing.JCheckBox removeSeriesDescriptionsCheckBox

    - #### removeProtocolNameCheckBox

          protected javax.swing.JCheckBox removeProtocolNameCheckBox

    - #### removeCharacteristicsCheckBox

          protected javax.swing.JCheckBox removeCharacteristicsCheckBox

    - #### removeDeviceIdentityCheckBox

          protected javax.swing.JCheckBox removeDeviceIdentityCheckBox

    - #### removeInstitutionIdentityCheckBox

          protected javax.swing.JCheckBox removeInstitutionIdentityCheckBox

    - #### cleanUIDsCheckBox

          protected javax.swing.JCheckBox cleanUIDsCheckBox

    - #### removePrivateCheckBox

          protected javax.swing.JCheckBox removePrivateCheckBox

    - #### addContributingEquipmentCheckBox

          protected javax.swing.JCheckBox addContributingEquipmentCheckBox

    - #### removeClinicalTrialAttributesCheckBox

          protected javax.swing.JCheckBox removeClinicalTrialAttributesCheckBox

    - #### zipExportCheckBox

          protected javax.swing.JCheckBox zipExportCheckBox

    - #### hierarchicalExportCheckBox

          protected javax.swing.JCheckBox hierarchicalExportCheckBox

    - #### acceptAnyTransferSyntaxCheckBox

          protected javax.swing.JCheckBox acceptAnyTransferSyntaxCheckBox

    - #### replacePatientNameCheckBox

          protected javax.swing.JCheckBox replacePatientNameCheckBox

    - #### replacePatientIDCheckBox

          protected javax.swing.JCheckBox replacePatientIDCheckBox

    - #### replaceAccessionNumberCheckBox

          protected javax.swing.JCheckBox replaceAccessionNumberCheckBox

    - #### modifyDatesCheckBox

          protected javax.swing.JCheckBox modifyDatesCheckBox

    - #### replacementPatientNameTextField

          protected javax.swing.JTextField replacementPatientNameTextField

    - #### replacementPatientIDTextField

          protected javax.swing.JTextField replacementPatientIDTextField

    - #### replacementAccessionNumberTextField

          protected javax.swing.JTextField replacementAccessionNumberTextField

    - #### modifyDatesTextField

          protected javax.swing.JTextField modifyDatesTextField

    - #### queryFilterPatientNameTextField

          protected javax.swing.JTextField queryFilterPatientNameTextField

    - #### queryFilterPatientIDTextField

          protected javax.swing.JTextField queryFilterPatientIDTextField

    - #### queryFilterStudyDateTextField

          protected javax.swing.JTextField queryFilterStudyDateTextField

    - #### queryFilterAccessionNumberTextField

          protected javax.swing.JTextField queryFilterAccessionNumberTextField

    - #### progressBarUpdater

          protected SafeProgressBarUpdaterThread progressBarUpdater

    - #### cursorChanger

          protected SafeCursorChanger cursorChanger

    - #### logger

          protected MessageLogger logger

    - #### networkApplicationProperties

          protected NetworkApplicationProperties networkApplicationProperties

    - #### networkApplicationInformation

          protected NetworkApplicationInformation networkApplicationInformation

    - #### currentRemoteQueryInformationModel

          protected QueryInformationModel currentRemoteQueryInformationModel

    - #### currentRemoteQuerySelectionQueryTreeRecord

          protected QueryTreeRecord currentRemoteQuerySelectionQueryTreeRecord

    - #### currentRemoteQuerySelectionUniqueKeys

          protected AttributeList currentRemoteQuerySelectionUniqueKeys

    - #### currentRemoteQuerySelectionUniqueKey

          protected Attribute currentRemoteQuerySelectionUniqueKey

    - #### currentRemoteQuerySelectionRetrieveAE

          protected java.lang.String currentRemoteQuerySelectionRetrieveAE

    - #### currentRemoteQuerySelectionLevel

          protected java.lang.String currentRemoteQuerySelectionLevel

    - #### ourCalledAETitle

          protected java.lang.String ourCalledAETitle

    - #### earliestDatesIndexedBySourceFilePath

          protected java.util.Map<java.lang.String,​java.util.Date> earliestDatesIndexedBySourceFilePath

    - #### savedImagesFolder

          protected java.io.File savedImagesFolder

    - #### storageSOPClassSCPDispatcher

          protected StorageSOPClassSCPDispatcher storageSOPClassSCPDispatcher

    - #### currentSourceDatabaseSelections

          protected DatabaseTreeRecord[] currentSourceDatabaseSelections

    - #### currentSourceFilePathSelections

          protected java.util.Vector currentSourceFilePathSelections

    - #### currentDestinationDatabaseSelections

          protected DatabaseTreeRecord[] currentDestinationDatabaseSelections

    - #### currentDestinationFilePathSelections

          protected java.util.Vector currentDestinationFilePathSelections

    - #### importDirectoryPath

          protected java.lang.String importDirectoryPath

    - #### exportDirectoryPath

          protected java.lang.String exportDirectoryPath

  - ### Constructor Detail

    - #### DicomCleaner

          public DicomCleaner()
                       throws DicomException,
                              java.io.IOException

      Throws:
        `DicomException`
        `java.io.IOException`

  - ### Method Detail

    - #### setCurrentRemoteQueryInformationModel

          protected void setCurrentRemoteQueryInformationModel​(java.lang.String remoteAEForQuery)

    - #### importFileIntoDatabase

          protected static void importFileIntoDatabase​(DatabaseInformationModel database,
                                                       java.lang.String dicomFileName,
                                                       java.lang.String fileReferenceType,
                                                       java.util.Map<java.lang.String,​java.util.Date> earliestDatesIndexedBySourceFilePath)
                                                throws java.io.FileNotFoundException,
                                                       java.io.IOException,
                                                       DicomException

      Throws:
        `java.io.FileNotFoundException`
        `java.io.IOException`
        `DicomException`

    - #### activateStorageSCP

          protected void activateStorageSCP()
                                     throws DicomException,
                                            java.io.IOException

      Start DICOM storage listener for populating source database.

      Throws:
        `DicomException`
        `java.io.IOException`

    - #### activateTemporaryDatabases

          protected void activateTemporaryDatabases()
                                             throws DicomException

      Start two databases, one for the "source" instances and one for the "target" instances.

      Neither will persist when the application is closed, so in memory databases only are used and instances live in the temporary filesystem.

      Throws:
        `DicomException`

    - #### purgeFilesAndDatabaseInformation

          protected void purgeFilesAndDatabaseInformation​(DatabaseTreeRecord[] databaseSelections,
                                                          MessageLogger logger,
                                                          SafeProgressBarUpdaterThread progressBarUpdater,
                                                          int done,
                                                          int maximum)
                                                   throws DicomException,
                                                          java.io.IOException

      Throws:
        `DicomException`
        `java.io.IOException`

    - #### purgeFilesAndDatabaseInformation

          protected void purgeFilesAndDatabaseInformation​(DatabaseTreeRecord databaseSelection,
                                                          MessageLogger logger,
                                                          SafeProgressBarUpdaterThread progressBarUpdater,
                                                          int done,
                                                          int maximum)
                                                   throws DicomException,
                                                          java.io.IOException

      Throws:
        `DicomException`
        `java.io.IOException`

    - #### copyFromOriginalToCleanedPerformingAction

          protected boolean copyFromOriginalToCleanedPerformingAction​(java.util.Vector paths,
                                                                      java.util.Date earliestDateInSet,
                                                                      MessageLogger logger,
                                                                      SafeProgressBarUpdaterThread progressBarUpdater)
                                                               throws DicomException,
                                                                      java.io.IOException

      Throws:
        `DicomException`
        `java.io.IOException`

    - #### findEarliestDate

          protected static java.util.Date findEarliestDate​(java.util.Map<java.lang.String,​java.util.Date> earliestDatesIndexedBySourceFilePath,
                                                           java.util.Vector<java.lang.String> sourceFilePathSelections)

    - #### makeNewFullyQualifiedInterchangeMediaInstancePathName

          protected java.lang.String makeNewFullyQualifiedInterchangeMediaInstancePathName​(int fileCount)
                                                                                    throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### makeNewFullyQualifiedHierarchicalInstancePathName

          protected java.lang.String makeNewFullyQualifiedHierarchicalInstancePathName​(java.lang.String sourceFileName)
                                                                                throws DicomException,
                                                                                       java.io.IOException

      Throws:
        `DicomException`
        `java.io.IOException`

    - #### setCurrentRemoteQuerySelection

          protected void setCurrentRemoteQuerySelection​(AttributeList uniqueKeys,
                                                        Attribute uniqueKey,
                                                        AttributeList identifier)

    - #### performRetrieve

          protected void performRetrieve​(AttributeList uniqueKeys,
                                         java.lang.String selectionLevel,
                                         java.lang.String retrieveAE)

    - #### main

          public static void main​(java.lang.String[] arg)

      The method to invoke the application.

      Parameters:
        `arg` - none