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
`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
`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 static boolean` `haveCheckedForJPEG2000Part1Codec`
`protected static boolean` `haveCheckedForJPEGLosslessCodec`
`protected static boolean` `haveFoundJPEG2000Part1Codec`
`protected static boolean` `haveFoundJPEGLosslessCodec`
`protected static boolean` `haveScannedForCodecs`
`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` `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` `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, EXIT_ON_CLOSE, 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 javax.swing.WindowConstants

`DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE`

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

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

### Constructor Summary

Constructors
Constructor and Description
`DicomCleaner()`

### Method Summary

Methods
`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 void` `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 boolean` `haveJPEG2000Part1Codec()`
`protected boolean` `haveJPEGLosslessCodec()`
`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, getPeer, 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, requestFocusInWindow, requestFocusInWindow, resize, resize, revalidate, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setMaximumSize, 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

#### 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

#### 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

#### 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

#### haveScannedForCodecs

    protected static boolean haveScannedForCodecs

#### haveCheckedForJPEGLosslessCodec

    protected static boolean haveCheckedForJPEGLosslessCodec

#### haveFoundJPEGLosslessCodec

    protected static boolean haveFoundJPEGLosslessCodec

#### haveCheckedForJPEG2000Part1Codec

    protected static boolean haveCheckedForJPEG2000Part1Codec

#### haveFoundJPEG2000Part1Codec

    protected static boolean haveFoundJPEG2000Part1Codec

#### 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

#### haveJPEGLosslessCodec

    protected boolean haveJPEGLosslessCodec()

#### haveJPEG2000Part1Codec

    protected boolean haveJPEG2000Part1Codec()

#### 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 void 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