Package org.omegat.core.data
Class RealProject
- java.lang.Object
-
- org.omegat.core.data.RealProject
-
- All Implemented Interfaces:
IProject
public class RealProject extends java.lang.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.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.omegat.core.data.IProject
IProject.AllTranslations, IProject.DefaultTranslationsIterator, IProject.FileInfo, IProject.MultipleTranslationsIterator, IProject.OptimisticLockingFail
-
-
Constructor Summary
Constructors Constructor Description RealProject(ProjectProperties props)
Create new project instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Map<EntryKey,ITMXEntry>
align(ProjectProperties props, java.io.File translatedDir)
Align project.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.void
commitSourceFiles()
Commit source files in a team project.void
compileProject(java.lang.String sourcePattern)
Builds translated files corresponding to sourcePattern and creates fresh TM files.void
compileProject(java.lang.String sourcePattern, boolean doPostProcessing)
Builds translated files corresponding to sourcePattern and creates fresh TM files.void
compileProjectAndCommit(java.lang.String sourcePattern, boolean doPostProcessing, boolean commitTargetFiles)
Builds translated files corresponding to sourcePattern and creates fresh TM files.void
createProject()
Create new project.java.util.List<SourceTextEntry>
getAllEntries()
Get all source segments.IProject.AllTranslations
getAllTranslations(SourceTextEntry ste)
Get default and alternative translations for optimistic locking.java.util.Map<Language,ProjectTMX>
getOtherTargetLanguageTMs()
Get all translation memories from /other_lang/ folder.java.util.List<IProject.FileInfo>
getProjectFiles()
Get info about each source file in project.ProjectProperties
getProjectProperties()
Returns the active Project's Properties.java.util.List<java.lang.String>
getSourceFilesOrder()
Get ordered list of source file names.ITokenizer
getSourceTokenizer()
Returns tokenizer for source language.StatisticsInfo
getStatistics()
Get statistics for project.java.lang.String
getTargetPathForSourceFile(java.lang.String currentSource)
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).ITokenizer
getTargetTokenizer()
Returns tokenizer for target language.TMXEntry
getTranslationInfo(SourceTextEntry ste)
Get translation info for specified entry.java.util.Map<java.lang.String,ExternalTMX>
getTransMemories()
Get all translation memories from /tm/ folder.boolean
isOrphaned(java.lang.String source)
Check if orphaned.boolean
isOrphaned(EntryKey entry)
Check if orphaned.boolean
isProjectLoaded()
Get project loaded status.boolean
isProjectModified()
Returns whether the project was modified.boolean
isRemoteProject()
Tells whether a project is a team projectboolean
isTeamSyncPrepared()
Check if team synchronization prepared.void
iterateByDefaultTranslations(IProject.DefaultTranslationsIterator it)
Iterate by all default translations in project.void
iterateByMultipleTranslations(IProject.MultipleTranslationsIterator it)
Iterate by all multiple translations in project.void
loadProject(boolean onlineMode)
Load exist project in a "big" sense -- loads project's properties, glossaries, tms, source files etc.void
saveProject(boolean doTeamSync)
Saves the translation memory and preferences.void
saveProjectProperties()
Save project properties only.void
setNote(SourceTextEntry entry, TMXEntry oldTE, java.lang.String note)
Change note only for translation.void
setSourceFilesOrder(java.util.List<java.lang.String> filesList)
Set ordered list of source file names.void
setTranslation(SourceTextEntry entry, PrepareTMXEntry trans, boolean defaultTranslation, TMXEntry.ExternalLinked externalLinked)
Set translation for entry.void
setTranslation(SourceTextEntry entry, PrepareTMXEntry trans, boolean defaultTranslation, TMXEntry.ExternalLinked externalLinked, IProject.AllTranslations previous)
Set translation for entry with optimistic lock checking: if previous translation is not the same like in storage, OptimisticLockingFail exception will be generated.void
teamSync()
Fast team sync for execute from SaveThread.void
teamSyncPrepare()
Prepare for future team sync.
-
-
-
Constructor Detail
-
RealProject
public RealProject(ProjectProperties props)
Create new project instance. It required to callcreateProject()
orloadProject(boolean)
methods just after constructor before use project.- Parameters:
props
- project properties
-
-
Method Detail
-
saveProjectProperties
public void saveProjectProperties() throws java.lang.Exception
Description copied from interface:IProject
Save project properties only.- Specified by:
saveProjectProperties
in interfaceIProject
- Throws:
java.lang.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 java.util.Map<EntryKey,ITMXEntry> align(ProjectProperties props, java.io.File translatedDir) throws java.lang.Exception
Align project.- Throws:
java.lang.Exception
-
isProjectLoaded
public boolean isProjectLoaded()
Get project loaded status.- Specified by:
isProjectLoaded
in interfaceIProject
- Returns:
- true if project loaded
-
getStatistics
public StatisticsInfo getStatistics()
Get statistics for project.- Specified by:
getStatistics
in interfaceIProject
- Returns:
-
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 interfaceIProject
-
compileProject
public void compileProject(java.lang.String sourcePattern) throws java.lang.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 interfaceIProject
- Parameters:
sourcePattern
- The regexp of files to create- Throws:
java.lang.Exception
-
compileProject
public void compileProject(java.lang.String sourcePattern, boolean doPostProcessing) throws java.lang.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 createdoPostProcessing
- Whether or not we should perform external post-processing.- Throws:
java.lang.Exception
-
compileProjectAndCommit
public void compileProjectAndCommit(java.lang.String sourcePattern, boolean doPostProcessing, boolean commitTargetFiles) throws java.lang.Exception
Builds translated files corresponding to sourcePattern and creates fresh TM files.- Specified by:
compileProjectAndCommit
in interfaceIProject
- Parameters:
sourcePattern
- The regexp of files to createdoPostProcessing
- Whether or not we should perform external post-processing.commitTargetFiles
- Whether or not we should commit target files- Throws:
java.lang.Exception
-
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 interfaceIProject
-
teamSyncPrepare
public void teamSyncPrepare() throws java.lang.Exception
Prepare for future team sync. This method must be executed in the Core.executeExclusively.- Specified by:
teamSyncPrepare
in interfaceIProject
- Throws:
java.lang.Exception
-
isTeamSyncPrepared
public boolean isTeamSyncPrepared()
Description copied from interface:IProject
Check if team synchronization prepared.- Specified by:
isTeamSyncPrepared
in interfaceIProject
-
teamSync
public void teamSync()
Fast team sync for execute from SaveThread. This method must be executed in the Core.executeExclusively.
-
getAllEntries
public java.util.List<SourceTextEntry> getAllEntries()
Get all source segments. It's unmodifiable list, so, there is no need synchronization to read it.- Specified by:
getAllEntries
in interfaceIProject
-
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 interfaceIProject
- 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 interfaceIProject
-
getProjectProperties
public ProjectProperties getProjectProperties()
Returns the active Project's Properties.- Specified by:
getProjectProperties
in interfaceIProject
- 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 interfaceIProject
-
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 interfaceIProject
- Parameters:
entry
- entrytrans
- 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 interfaceIProject
- Parameters:
entry
- entrytrans
- translation. It can't be null
-
setNote
public void setNote(SourceTextEntry entry, TMXEntry oldTE, java.lang.String note)
Description copied from interface:IProject
Change note only for translation.
-
iterateByDefaultTranslations
public void iterateByDefaultTranslations(IProject.DefaultTranslationsIterator it)
Description copied from interface:IProject
Iterate by all default translations in project.- Specified by:
iterateByDefaultTranslations
in interfaceIProject
-
iterateByMultipleTranslations
public void iterateByMultipleTranslations(IProject.MultipleTranslationsIterator it)
Description copied from interface:IProject
Iterate by all multiple translations in project.- Specified by:
iterateByMultipleTranslations
in interfaceIProject
-
isOrphaned
public boolean isOrphaned(java.lang.String source)
Description copied from interface:IProject
Check if orphaned.- Specified by:
isOrphaned
in interfaceIProject
-
isOrphaned
public boolean isOrphaned(EntryKey entry)
Description copied from interface:IProject
Check if orphaned.- Specified by:
isOrphaned
in interfaceIProject
-
getTransMemories
public java.util.Map<java.lang.String,ExternalTMX> getTransMemories()
Description copied from interface:IProject
Get all translation memories from /tm/ folder.- Specified by:
getTransMemories
in interfaceIProject
- Returns:
- translation memories
-
getOtherTargetLanguageTMs
public java.util.Map<Language,ProjectTMX> getOtherTargetLanguageTMs()
Description copied from interface:IProject
Get all translation memories from /other_lang/ folder.- Specified by:
getOtherTargetLanguageTMs
in interfaceIProject
- Returns:
- translation memories
-
getSourceTokenizer
public ITokenizer getSourceTokenizer()
Returns tokenizer for source language.- Specified by:
getSourceTokenizer
in interfaceIProject
-
getTargetTokenizer
public ITokenizer getTargetTokenizer()
Returns tokenizer for target language.- Specified by:
getTargetTokenizer
in interfaceIProject
-
getProjectFiles
public java.util.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 interfaceIProject
-
getTargetPathForSourceFile
public java.lang.String getTargetPathForSourceFile(java.lang.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 interfaceIProject
- Parameters:
currentSource
- The relative path (under thesource
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 java.util.List<java.lang.String> getSourceFilesOrder()
Description copied from interface:IProject
Get ordered list of source file names.- Specified by:
getSourceFilesOrder
in interfaceIProject
-
setSourceFilesOrder
public void setSourceFilesOrder(java.util.List<java.lang.String> filesList)
Description copied from interface:IProject
Set ordered list of source file names.- Specified by:
setSourceFilesOrder
in interfaceIProject
-
isRemoteProject
public boolean isRemoteProject()
Description copied from interface:IProject
Tells whether a project is a team project- Specified by:
isRemoteProject
in interfaceIProject
- Returns:
- whether the project is a team project
-
commitSourceFiles
public void commitSourceFiles() throws java.lang.Exception
Description copied from interface:IProject
Commit source files in a team project.- Specified by:
commitSourceFiles
in interfaceIProject
- Throws:
java.lang.Exception
-
-