Class MDocStorage

java.lang.Object
chemaxon.marvin.view.MDocStorage

@PublicAPI public class MDocStorage extends Object
Sparse dynamic document storage and reader.
Since:
Marvin 4.1, 04/13/2006
  • Constructor Details

    • MDocStorage

      public MDocStorage()
      Constructs a document storage.
    • MDocStorage

      public MDocStorage(int n)
      Constructs a document storage.
      Parameters:
      n - number of documents to store
  • Method Details

    • getDocSource

      public MDocSource getDocSource()
      Gets the document source.
      Returns:
      the document source
      Since:
      Marvin 4.1.6, 03/08/2007
    • setDocSource

      public void setDocSource(MDocSource dp, int offset, int max)
      Sets the document source.
      Parameters:
      dp - the document (molecule) source
      offset - number of documents to skip in the source
      max - maximum allowed number of documents or 0 (no restriction)
    • getFieldAccessor

      public MFieldAccessor getFieldAccessor()
      Gets the field accessor.
      Returns:
      the field accessor
      Since:
      Marvin 5.0, 11/09/2007
    • setFieldAccessor

      public void setFieldAccessor(MFieldAccessor fa)
      Sets the field accessor.
      Parameters:
      fa - the field accessor
      Since:
      Marvin 5.0, 11/09/2007
    • getOffset

      public int getOffset()
      Gets the offset in the document source.
      Returns:
      the first record index
      Since:
      Marvin 5.0, 11/18/2007
    • getDocSourcePosition

      public int getDocSourcePosition()
      Gets the current position in the input.
      Returns:
      the position or -1 if there is no document source
    • addListener

      public void addListener(MDocStorage.Listener l)
      Adds a listener if it is not yet added.
      Parameters:
      l - the listener
    • removeListener

      public void removeListener(MDocStorage.Listener l)
      Removes a listener.
      Parameters:
      l - the listener
    • getListeners

      public MDocStorage.Listener[] getListeners()
    • setListeners

      public void setListeners(MDocStorage.Listener[] arr)
    • getSize

      public int getSize()
      Gets the total number of entries.
      Returns:
      the total number of entries
    • setSize

      public void setSize(int n)
      Sets the total number of entries. (Resize the arrays.)
      Parameters:
      n - new capacity (maximum number of documents)
    • isSizeFinal

      public boolean isSizeFinal()
      Tests whether the storage size is final.
      Returns:
      true is the storage will not grow, false if it may grow
    • getCapacity

      public int getCapacity()
      Gets the total capacity.
      Returns:
      the maximum number of entries (without reallocation)
    • getCacheCapacity

      public int getCacheCapacity()
      Gets the maximum number of cached documents.
      Returns:
      the cache capacity or 0 if everything is stored
    • setCacheCapacity

      public void setCacheCapacity(int max)
      Sets the maximum number of cached documents.
      Parameters:
      max - maximum number of documents in memory or 0 to store everything
    • getCachedDocIndices

      public int[] getCachedDocIndices()
      Gets the indices of cached records.
      Returns:
      array of indices
    • isRewindable

      public boolean isRewindable()
      Tests whether the document storage is rewindable. It is rewindable if either the document source is rewindable (e.g. a seekable input stream) or all documents are stored permanently in memory after reading (if cache size equals the total capacity).
      Returns:
      true if backward seeking is possible, false otherwise
    • getDoc

      Gets the specified document.
      Parameters:
      k - the record index
      key - the molecule (or document) field name, null for the main document (molecule)
      Throws:
      MDocStorage.RecordUnavailableException - if the requested record is not available (probably end of file reached too early)
      IOException - if read error occurred
      Since:
      Marvin 5.2, 02/10/2009
    • getDoc

      Gets the specified document.
      Parameters:
      k - the record index
      key - the molecule (or document) field name, null for the main document (molecule)
      pmon - progress monitor or null
      Throws:
      MDocStorage.RecordUnavailableException - if the requested record is not available (probably end of file reached too early)
      MDocStorage.CancellationException - if the user cancelled the operation
      IOException - if read error occurred
    • getMainDoc

      Gets the document at the specified position.
      Parameters:
      k - the record index
      Returns:
      the document or null
      Throws:
      MDocStorage.RecordUnavailableException - if the requested record is not available (probably end of file reached too early)
      IOException - if read error occurred
      Since:
      Marvin 5.2, 02/10/2009
    • getMainDoc

      Gets the document at the specified position.
      Parameters:
      k - the record index
      pmon - progress monitor or null
      Returns:
      the document or null
      Throws:
      MDocStorage.RecordUnavailableException - if the requested record is not available (probably end of file reached too early)
      MDocStorage.CancellationException - if the user cancelled the operation
      IOException - if read error occurred
    • getDocLabel

      public String getDocLabel(int k, MDocument doc)
      Returns the display label for the given document and document index. The default implementation returns k+1 as String, where k is the document index.
      Parameters:
      k - the document index
      doc - the document
      Returns:
      the document label
      Since:
      Marvin 5.0
    • countRecords

      public int countRecords(MProgressMonitor pmon, int dt, Runnable sizeupdater, int max) throws IOException
      Counts the total number of records and sets the size of the document storage.
      Parameters:
      pmon - progress monitor or null
      dt - time interval in milliseconds for calling size update
      sizeupdater - optional runnable to be called if the total number of records changed or null
      max - the maximum record index where counting should stop
      Returns:
      the number of records or -1 if the user canceled the progress monitor
      Throws:
      IOException - if read error occurred
      Since:
      Marvin 5.2, 01/22/2009
    • countRecordsInFraction

      @Deprecated(forRemoval=true) @SubjectToRemoval(date=JUL_01_2025) public int countRecordsInFraction(double q, int ncols, MProgressMonitor pmon) throws IOException
      Deprecated, for removal: This API element is subject to removal in a future version.
      Counts the number of records between the start and the specified fraction of the total, estimated number of records.
      Parameters:
      q - the fraction, floating point number between 0 and 1
      ncols - the number of columns (1 if there are no more columns)
      pmon - progress monitor or null
      Returns:
      the estimated number of records in the specified fraction or -1 if the user canceled the progress monitor
      Throws:
      IOException - if read error occurred
    • isFractionQuicklyAvailable

      public boolean isFractionQuicklyAvailable(double x)
      Tests whether the specified fraction of the total (estimated) number of records is quickly available. A record is quickly available if its file position is known (because it was previously retrieved or skipped) or it is in the memory (if no document source is present).
      Parameters:
      x - the fraction, floating point number between 0 and 1
      Returns:
      true if the specified fraction is quickly available, false otherwise
    • getCacheLock

      public Object getCacheLock()
      Gets the synchronization lock for caching operations.
      Returns:
      the lock object
      Since:
      Marvin 5.0, 12/04/2007
    • getMaxDimCached

      public int getMaxDimCached()
      Gets the maximum molecule dimension.
      Returns:
      the maximum dimension
    • getCachedDoc

      public MDocument getCachedDoc(int k, String key)
      Gets the specified document if it is present in the memory.
      Parameters:
      k - the record index
      key - the molecule (or document) field name, null for the main document (molecule)
      Returns:
      the document or null
      Since:
      Marvin 5.0, 11/18/2007
    • storeDoc

      public void storeDoc(MDocument doc, int k, String key)
      Store new document and free the oldest accessed if the number of documents is too much to fit in memory.
      Parameters:
      doc - the new document
      k - record index (minus doc source offset)
      key - the molecule (or document) field name, null for the main document (molecule)
    • storeMainDoc

      public void storeMainDoc(MDocument doc, int k)
      Store new document and free the oldest accessed if the number of documents is too much to fit in memory.
      Parameters:
      doc - the new document
      k - record index (minus doc source offset)
    • isFixed

      public boolean isFixed(int k)
      Tests whether a record is fixed.
      Parameters:
      k - the record index
      Returns:
      true if the document object will remain in memory until the end of life of this storage object, false if it can be freed and reloaded dynamically to save memory
      Throws:
      IndexOutOfBoundsException - if the specified index is negative.
    • setFixed

      public void setFixed(int k)
      Sets a document as fixed. Fixed documents are never freed, they remain in memory until the end of life of this storage object.
      Parameters:
      k - the document entry index
      Throws:
      IndexOutOfBoundsException - if the specified index is negative or larger than the number of capacity
    • getMolPainter

      public chemaxon.marvin.paint.internal.MolPainter getMolPainter(int k, String key)
      Gets a molecule painter.
      Parameters:
      k - the document entry index
      key - the molecule field name, null for the main document (molecule)
      Returns:
      the molecule painter or null
    • setMolPainter

      public void setMolPainter(int k, String key, chemaxon.marvin.paint.internal.MolPainter p)
      Sets a molecule painter.
      Parameters:
      k - the document entry index
      key - the molecule field name, null for the main document (molecule)
      p - the painter
    • getMolCenter

      public DPoint3 getMolCenter(int k, String key)
      Gets a molecule center.
      Parameters:
      k - the document entry index
      key - the molecule field name, null for the main document (molecule)
      Returns:
      the center
    • setMolCenter

      public void setMolCenter(int k, String key, DPoint3 p)
      Sets a molecule center.
      Parameters:
      k - the document entry index
      key - the molecule field name, null for the main document (molecule)
      p - the center point
    • getSelectedAtoms

      public int[] getSelectedAtoms(int k, String key)
      Gets the selected atom indices.
      Parameters:
      k - the record index
      key - the molecule field name, null for the main document (molecule)
      Returns:
      selected atom indices
    • setSelectedAtoms

      public void setSelectedAtoms(int k, String key, int[] sel)
      Sets the selected atom indices.
      Parameters:
      k - the record index
      key - the molecule field name, null for the main document (molecule)
      sel - array containing the selected atom indices
    • setSelectedAtoms

      public void setSelectedAtoms(int k, String key, String str)
      Sets the selected atom indices.
      Parameters:
      k - the record index
      key - the molecule field name, null for the main document (molecule)
      str - string containing a comma separated list of atom indices
    • setAtomSetSeqs

      public void setAtomSetSeqs(int k, String key, int[] seqs)
      Sets atom set sequence numbers.
      Parameters:
      k - the record index
      key - the molecule field name, null for the main document (molecule)
      seqs - array of atom set sequence numbers
    • setAtomSetSeq

      public void setAtomSetSeq(int k, String key, String str, int setSeq)
      Sets atom set sequence numbers.
      Parameters:
      k - the record index
      key - the molecule field name, null for the main document (molecule)
      str - string containing a comma separated list of atom indices
      setSeq - atom set sequence number
    • setAtomSetSeq

      public void setAtomSetSeq(int k, String key, int atom, int seq)
      Sets the atom set sequence number of an atom.
      Parameters:
      k - the record index
      key - the molecule field name, null for the main document (molecule)
      atom - atom index
      seq - atom set sequence number
    • setBondSetSeqs

      public void setBondSetSeqs(int k, String key, List<int[]> seqs)
      Sets bond set sequence numbers.
      Parameters:
      k - the record index
      key - the molecule field name, null for the main document (molecule)
      seqs - vector of bond set sequence numbers
    • setBondSetSeq

      public void setBondSetSeq(int k, String key, String str, int setSeq)
      Sets bond set sequence numbers.
      Parameters:
      k - the record index
      key - the molecule field name, null for the main document (molecule)
      str - string containing a comma separated list of bonds in j1-j2 format, where j1 and j2 are atom indices
      setSeq - bond set sequence number
    • setBondSetSeq

      public void setBondSetSeq(int k, String key, int firstAtomIndex, int secondAtomIndex, int seq)
      Sets bond set sequence numbers.
      Parameters:
      k - the record index
      key - the molecule field name, null for the main document (molecule)
      firstAtomIndex - first atom index
      secondAtomIndex - second atom index
      seq - bond set sequence number
    • setBondSetSeqAll

      public void setBondSetSeqAll(int k, String key, int seq)
      Sets all bond set sequence numbers.
      Parameters:
      k - the record index
      key - the molecule field name, null for the main document (molecule)
      seq - bond set sequence number
    • doSetSetSeqs

      public void doSetSetSeqs(Molecule[] mols, int k, String key)
    • getL

      public String getL(int k, int j)
      Gets a text label in a record.
      Parameters:
      k - the record index
      j - label index
      Returns:
      the label or null
    • setL

      public void setL(int k, int j, String l)
      Sets a text label in a record.
      Parameters:
      k - the record index
      j - label index
      l - the label or null
    • getT

      public String getT(int k, int j)
      Gets a text field in a record.
      Parameters:
      k - the record index
      j - text field index
      Returns:
      the text or null
    • setT

      public void setT(int k, int j, String l)
      Sets a text field in a record.
      Parameters:
      k - the record index
      j - label index
      l - the text or null
    • isEnabledT

      public boolean isEnabledT(int k, int j)
      Tests whether a text field is enabled.
      Parameters:
      k - the record index
      j - text field index
      Returns:
      true if enabled, false otherwise
    • setEnabledT

      public void setEnabledT(int k, int j, boolean l)
      Set the enabled state of a text field in a record.
      Parameters:
      k - the record index
      j - label index
      l - enable (true) or disable (false)
    • getIDBackgroundRGBA

      public int getIDBackgroundRGBA(int k)
      Gets the background color's RGBA value in a record.
      Parameters:
      k - the record index
      Returns:
      the RGB value or 0 if unset
      Since:
      Marvin 5.2, 02/22/2009
    • setIDBackgroundRGBA

      public boolean setIDBackgroundRGBA(int k, int rgba)
      Sets the background color's RGBA value in a record.
      Parameters:
      k - the record index
      rgba - the RGBA value or 0 to reset the default color
      Returns:
      true if the color changed, false otherwise
      Since:
      Marvin 5.2, 02/22/2009
    • getIDForegroundRGBA

      public int getIDForegroundRGBA(int k)
      Gets the foreground color's RGBA value in a record.
      Parameters:
      k - the record index
      Returns:
      the RGB value or 0 if unset
      Since:
      Marvin 5.2, 02/22/2009
    • setIDForegroundRGBA

      public boolean setIDForegroundRGBA(int k, int rgba)
      Sets the foreground color's RGBA value in a record.
      Parameters:
      k - the record index
      rgba - the RGBA value or 0 to reset the default color
      Returns:
      true if the color changed, false otherwise
      Since:
      Marvin 5.2.1, 04/14/2009
    • fillWithNulls

      public void fillWithNulls()
      Set all stored document entries to null.
    • contractOrExpandSgroupsAll

      public boolean contractOrExpandSgroupsAll(boolean contract)
      Contract or expand S-groups in all molecules.
      Parameters:
      contract - contract (true or expand (false)
      Returns:
      true if the document is changed, false otherwise
    • contractOrExpandSgroups

      public boolean contractOrExpandSgroups(int k, String key, boolean contr)
      Contract or expand S-groups in the specified cell.
      Parameters:
      k - the record index
      key - the molecule field name, null for the main document (molecule)
      contr - contract (true or expand (false)
      Returns:
      true if the document is changed, false otherwise
    • hydrogenizeAll

      public boolean hydrogenizeAll(boolean hydr, String[] warn)
      Hydrogenize molecules in all cells.
      Parameters:
      hydr - hydrogenize (true or dehydrogenize (false)
      warn - 1-element array to store the warning message, or null
      Returns:
      true if the document is changed, false otherwise
    • hydrogenize

      public boolean hydrogenize(int k, String key, boolean hydr, String[] warn)
      Hydrogenize molecule in the specified cell.
      Parameters:
      k - the record index
      key - the molecule field name, null for the main document (molecule)
      hydr - hydrogenize (true or dehydrogenize (false)
      warn - 1-element array to store the warning message, or null
      Returns:
      true if the document is changed, false otherwise
    • aromatizeAll

      public boolean aromatizeAll(boolean v, int method, String[] warn)
      Aromatize or dearomatize molecules in all cells.
      Parameters:
      v - aromatize (true or dearomatize (false)
      method - aromatization method or 0
      warn - 1-element array to store the warning message, or null
      Returns:
      true if the document is changed, false otherwise
      Since:
      Marvin 4.1.1, 09/08/2006
    • aromatize

      public boolean aromatize(int k, String key, boolean v, int method, String[] warn)
      Aromatize or dearomatize molecule in the specified cell.
      Parameters:
      k - the record index
      key - the molecule field name, null for the main document (molecule)
      v - aromatize (true or dearomatize (false)
      method - aromatization method or 0
      warn - 1-element array to store the warning message, or null
      Returns:
      true if the document is changed, false otherwise
      Since:
      Marvin 4.1.1, 09/08/2006
    • cleanAll

      public boolean cleanAll(int dim, String opts, MProgressMonitor pm, String[] warn)
      Clean all cells.
      Parameters:
      dim - dimension, 2 or 3
      opts - cleaning options or null
      pm - progress monitor to use or null
      warn - 1-element array to store the warning message, or null
      Returns:
      true if the document is changed, false otherwise
      Since:
      Marvin 5.0, 09/09/2007
    • clean

      public boolean clean(int k, String key, int dim, String opts, MProgressMonitor pm, String[] warn)
      Clean the specified cell.
      Parameters:
      k - the record index
      key - the molecule field name, null for the main document (molecule)
      dim - dimension, 2 or 3
      opts - cleaning options or null
      pm - progress monitor to use or null
      warn - 1-element array to store the warning message, or null
      Returns:
      true if the document is changed, false otherwise
      Since:
      Marvin 5.0, 09/09/2007
    • getGlobalGUIProperties

      public MPropertyContainer getGlobalGUIProperties()
      Gets the Global GUI properties.
      Returns:
      the properties
      Since:
      Marvin 5.0, 10/16/2006