Class RealProject

java.lang.Object
org.omegat.core.data.RealProject
All Implemented Interfaces:
IProject

public class RealProject extends Object implements IProject
Loaded project implementation. Only translation could be changed after project will be loaded and set by Core.setProject. All components can read all data directly without synchronization. All synchronization implemented inside RealProject. Since team sync is long operation, auto-saving was split into 3 phrases: get remote data in background, then rebase during segment deactivation, then commit in background.
  • Constructor Details

  • Method Details

    • saveProjectProperties

      public void saveProjectProperties() throws Exception
      Description copied from interface: IProject
      Save project properties only.
      Specified by:
      saveProjectProperties in interface IProject
      Throws:
      Exception
    • createProject

      public void createProject()
      Create new project.
    • loadProject

      public void loadProject(boolean onlineMode)
      Load exist project in a "big" sense -- loads project's properties, glossaries, tms, source files etc.
    • align

      public Map<EntryKey,ITMXEntry> align(ProjectProperties props, File translatedDir) throws Exception
      Align project.
      Throws:
      Exception
    • isProjectLoaded

      public boolean isProjectLoaded()
      Description copied from interface: IProject
      Get project loaded status.
      Specified by:
      isProjectLoaded in interface IProject
      Returns:
      true if project loaded
    • getStatistics

      public StatisticsInfo getStatistics()
      Description copied from interface: IProject
      Get statistics info.
      Specified by:
      getStatistics in interface IProject
    • closeProject

      public void closeProject()
      Signals to the core thread that a project is being closed now, and if it's still being loaded, core thread shouldn't throw any error.
      Specified by:
      closeProject in interface IProject
    • compileProject

      public void compileProject(String sourcePattern) throws Exception
      Builds translated files corresponding to sourcePattern and creates fresh TM files. Convenience method. Assumes we want to run external post-processing commands.
      Specified by:
      compileProject in interface IProject
      Parameters:
      sourcePattern - The regexp of files to create
      Throws:
      Exception
    • compileProject

      public void compileProject(String sourcePattern, boolean doPostProcessing) throws Exception
      Builds translated files corresponding to sourcePattern and creates fresh TM files. Calls the actual compile project method, assumes we don't want to commit target files.
      Parameters:
      sourcePattern - The regexp of files to create
      doPostProcessing - Whether or not we should perform external post-processing.
      Throws:
      Exception
    • compileProjectAndCommit

      public void compileProjectAndCommit(String sourcePattern, boolean doPostProcessing, boolean commitTargetFiles) throws Exception
      Builds translated files corresponding to sourcePattern and creates fresh TM files.
      Specified by:
      compileProjectAndCommit in interface IProject
      Parameters:
      sourcePattern - The regexp of files to create
      doPostProcessing - Whether or not we should perform external post-processing.
      commitTargetFiles - Whether or not we should commit target files
      Throws:
      Exception - If any error occurs during the compilation process.
    • saveProject

      public void saveProject(boolean doTeamSync)
      Saves the translation memory and preferences.

      This method must be executed in the Core.executeExclusively.

      Specified by:
      saveProject in interface IProject
    • teamSyncPrepare

      public void teamSyncPrepare() throws Exception
      Prepare for future team sync. This method must be executed in the Core.executeExclusively.
      Specified by:
      teamSyncPrepare in interface IProject
      Throws:
      Exception
    • isTeamSyncPrepared

      public boolean isTeamSyncPrepared()
      Description copied from interface: IProject
      Check if team synchronization prepared.
      Specified by:
      isTeamSyncPrepared in interface IProject
    • teamSync

      public void teamSync()
      Fast team sync for execute from SaveThread. This method must be executed in the Core.executeExclusively.
      Specified by:
      teamSync in interface IProject
    • getAllEntries

      public List<SourceTextEntry> getAllEntries()
      Get all source segments. It's unmodifiable list, so, there is no need synchronization to read it.
      Specified by:
      getAllEntries in interface IProject
    • getTranslationInfo

      public TMXEntry getTranslationInfo(SourceTextEntry ste)
      Description copied from interface: IProject
      Get translation info for specified entry. It looks first for multiple, then for default. This method ALWAYS returns TMXEntry, because note can exist even for non-translated segment. Use TMXEntry.isTranslated() for check if translation text really exist. Translation can be checked for default/alternative by the TMXEntry.defaultTranslation.
      Specified by:
      getTranslationInfo in interface IProject
      Parameters:
      ste - source entry
      Returns:
      translation
    • getAllTranslations

      public IProject.AllTranslations getAllTranslations(SourceTextEntry ste)
      Description copied from interface: IProject
      Get default and alternative translations for optimistic locking.
      Specified by:
      getAllTranslations in interface IProject
    • getProjectProperties

      public ProjectProperties getProjectProperties()
      Returns the active Project's Properties.
      Specified by:
      getProjectProperties in interface IProject
      Returns:
      project properties
    • isProjectModified

      public boolean isProjectModified()
      Returns whether the project was modified. I.e. translations were changed since last save.
      Specified by:
      isProjectModified in interface IProject
    • setTranslation

      public void setTranslation(SourceTextEntry entry, PrepareTMXEntry trans, boolean defaultTranslation, TMXEntry.ExternalLinked externalLinked, IProject.AllTranslations previous) throws IProject.OptimisticLockingFail
      Description copied from interface: IProject
      Set translation for entry with optimistic lock checking: if previous translation is not the same like in storage, OptimisticLockingFail exception will be generated. Use when user has typed a new translation.
      Specified by:
      setTranslation in interface IProject
      Parameters:
      entry - entry
      trans - translation. It can't be null
      Throws:
      IProject.OptimisticLockingFail
    • setTranslation

      public void setTranslation(SourceTextEntry entry, PrepareTMXEntry trans, boolean defaultTranslation, TMXEntry.ExternalLinked externalLinked)
      Description copied from interface: IProject
      Set translation for entry.

      Optimistic locking will not be checked.

      Specified by:
      setTranslation in interface IProject
      Parameters:
      entry - entry
      trans - translation. It can't be null
    • setNote

      public void setNote(SourceTextEntry entry, TMXEntry oldTE, String note)
      Description copied from interface: IProject
      Change note only for translation.
      Specified by:
      setNote in interface IProject
      Parameters:
      entry - entry
      oldTE - old translation
      note - note text
    • iterateByDefaultTranslations

      public void iterateByDefaultTranslations(IProject.DefaultTranslationsIterator it)
      Description copied from interface: IProject
      Iterate by all default translations in project.
      Specified by:
      iterateByDefaultTranslations in interface IProject
    • iterateByMultipleTranslations

      public void iterateByMultipleTranslations(IProject.MultipleTranslationsIterator it)
      Description copied from interface: IProject
      Iterate by all multiple translations in project.
      Specified by:
      iterateByMultipleTranslations in interface IProject
    • isOrphaned

      public boolean isOrphaned(String source)
      Description copied from interface: IProject
      Check if orphaned.
      Specified by:
      isOrphaned in interface IProject
    • isOrphaned

      public boolean isOrphaned(EntryKey entry)
      Description copied from interface: IProject
      Check if orphaned.
      Specified by:
      isOrphaned in interface IProject
    • getTransMemories

      public Map<String,ExternalTMX> getTransMemories()
      Description copied from interface: IProject
      Get all translation memories from /tm/ folder.
      Specified by:
      getTransMemories in interface IProject
      Returns:
      translation memories
    • getOtherTargetLanguageTMs

      public Map<Language,ProjectTMX> getOtherTargetLanguageTMs()
      Description copied from interface: IProject
      Get all translation memories from /other_lang/ folder.
      Specified by:
      getOtherTargetLanguageTMs in interface IProject
      Returns:
      translation memories
    • getSourceTokenizer

      public ITokenizer getSourceTokenizer()
      Returns tokenizer for source language.
      Specified by:
      getSourceTokenizer in interface IProject
    • getTargetTokenizer

      public ITokenizer getTargetTokenizer()
      Returns tokenizer for target language.
      Specified by:
      getTargetTokenizer in interface IProject
    • getProjectFiles

      public List<IProject.FileInfo> getProjectFiles()
      Get info about each source file in project. It's unmodifiable list, so, there is no need synchronization to read it.
      Specified by:
      getProjectFiles in interface IProject
    • getTargetPathForSourceFile

      public String getTargetPathForSourceFile(String currentSource)
      Description copied from interface: IProject
      For a given source file, calculate the path of the target file that would be created by running Create Translated Documents (the file may not exist yet).

      The target path must be calculated because it can depend on project properties such as the target language, etc.

      Specified by:
      getTargetPathForSourceFile in interface IProject
      Parameters:
      currentSource - The relative path (under the source directory) of the source file, e.g. Bundle.properties
      Returns:
      The relative path (under the target directory) of the corresponding target file, e.g. Bundle_fr_FR.properties
    • getSourceFilesOrder

      public List<String> getSourceFilesOrder()
      Description copied from interface: IProject
      Get ordered list of source file names.
      Specified by:
      getSourceFilesOrder in interface IProject
    • setSourceFilesOrder

      public void setSourceFilesOrder(List<String> filesList)
      Description copied from interface: IProject
      Set ordered list of source file names.
      Specified by:
      setSourceFilesOrder in interface IProject
    • isRemoteProject

      public boolean isRemoteProject()
      Description copied from interface: IProject
      Tells whether a project is a team project
      Specified by:
      isRemoteProject in interface IProject
      Returns:
      whether the project is a team project
    • commitSourceFiles

      public void commitSourceFiles() throws Exception
      Description copied from interface: IProject
      Commit source files in a team project.
      Specified by:
      commitSourceFiles in interface IProject
      Throws:
      Exception - if any error occurs during the commit process