// Test filename title matches created file name
assertEquals( fileName, file.getTitle() );
final String DEFAULT_LOCALE = "default";
final IPentahoLocale SPANISH = new PentahoLocale( new Locale( "es" ) );
final IPentahoLocale US = new PentahoLocale( Locale.US );
final String TITLE = "title";
final String DESCRIPTION = "description";
final String EN_US_TITLE = "Locale Sample";
final String EN_US_DESCRIPTION = "This is a test for retrieving localized words";
final String SP_TITLE = "Muestra de Localizacion";
final String SP_DESCRIPTION = "Esta es una prueba para buscar palabras localizadas";
RepositoryFile.Builder builder = new RepositoryFile.Builder( file );
Map<String, Properties> localeMap = new HashMap<String, Properties>();
// Set English locale values
final Properties enProperties = new Properties();
enProperties.setProperty( TITLE, EN_US_TITLE );
enProperties.setProperty( DESCRIPTION, EN_US_DESCRIPTION );
localeMap.put( US.toString(), enProperties );
// Set Spanish locale values
final Properties esProperties = new Properties();
esProperties.setProperty( TITLE, SP_TITLE );
esProperties.setProperty( DESCRIPTION, SP_DESCRIPTION );
localeMap.put( SPANISH.toString(), esProperties );
builder.localePropertiesMap( localeMap );
// Update file data
final SampleRepositoryFileData modContent = new SampleRepositoryFileData( "blah", false, 123 );
repo.updateFile( builder.build(), modContent, null );
// Retrieve file - gets full map
final RepositoryFile updatedFile = repo.getFile( file.getPath(), true );
// Assert messages are the same
Properties ep = updatedFile.getLocalePropertiesMap().get( US.toString() );
assertEquals( EN_US_TITLE, ep.getProperty( TITLE ) );
assertEquals( EN_US_DESCRIPTION, ep.getProperty( DESCRIPTION ) );
Properties sp = updatedFile.getLocalePropertiesMap().get( SPANISH.toString() );
assertEquals( SP_TITLE, sp.getProperty( TITLE ) );
assertEquals( SP_DESCRIPTION, sp.getProperty( DESCRIPTION ) );
// Assert empty rootLocale
Properties rootLocale = updatedFile.getLocalePropertiesMap().get( DEFAULT_LOCALE );
assertNotNull( rootLocale );
final String NEW_TITLE = "new title";
final String NEW_DESCRIPTION = "new description";
enProperties.setProperty( TITLE, NEW_TITLE ); // overwrite title
enProperties.setProperty( DESCRIPTION, NEW_DESCRIPTION ); // overwrite title
txnTemplate.execute( new TransactionCallbackWithoutResult() {
public void doInTransactionWithoutResult( final TransactionStatus status ) {
// assert available locales
List<Locale> locales = repositoryFileDao.getAvailableLocalesForFile( updatedFile );
assertEquals( 3, locales.size() ); // includes rootLocale
// assert correct locale properties
Properties properties = repositoryFileDao.getLocalePropertiesForFile( updatedFile, "es" );
assertEquals( SP_TITLE, properties.getProperty( TITLE ) );
assertEquals( SP_DESCRIPTION, properties.getProperty( DESCRIPTION ) );
repositoryFileDao.setLocalePropertiesForFile( updatedFile, Locale.US.getLanguage(), enProperties );
}
} );
// Assert updated properties
RepositoryFile updatedRepoFile = repo.getFile( file.getPath(), true );
Properties updated_en = updatedRepoFile.getLocalePropertiesMap().get( US.toString() );
assertEquals( NEW_TITLE, updated_en.getProperty( TITLE ) );
assertEquals( NEW_DESCRIPTION, updated_en.getProperty( DESCRIPTION ) );
// test successful delete locale properties
final RepositoryFile repoFile1 = updatedRepoFile.clone();