List of usage examples for org.springframework.transaction.support TransactionCallbackWithoutResult TransactionCallbackWithoutResult
TransactionCallbackWithoutResult
From source file:org.pentaho.platform.repository2.unified.DefaultUnifiedRepositoryContentIT.java
@Test public void testLocalePropertiesMap() throws Exception { loginAsSysTenantAdmin();// w w w . ja va2s. c om ITenant tenantAcme = tenantManager.createTenant(systemTenant, TENANT_ID_ACME, tenantAdminRoleName, tenantAuthenticatedRoleName, ANONYMOUS_ROLE_NAME); userRoleDao.createUser(tenantAcme, USERNAME_SUZY, PASSWORD, "", new String[] { tenantAdminRoleName }); logout(); login(USERNAME_SUZY, tenantAcme, new String[] { tenantAdminRoleName, tenantAuthenticatedRoleName }); // Create file final String fileName = "locale.sample"; RepositoryFile file = createSampleFile(ClientRepositoryPaths.getUserHomeFolderPath(USERNAME_SUZY), fileName, "test", false, 123); // 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() { @Override 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(); txnTemplate.execute(new TransactionCallbackWithoutResult() { @Override public void doInTransactionWithoutResult(final TransactionStatus status) { repositoryFileDao.deleteLocalePropertiesForFile(repoFile1, "es"); } }); // assert deleted locale updatedRepoFile = repo.getFile(file.getPath(), true); List<Locale> locales = repositoryFileDao.getAvailableLocalesForFile(updatedRepoFile); assertEquals(2, locales.size()); // test successful delete locale properties final RepositoryFile repoFile2 = updatedRepoFile.clone(); txnTemplate.execute(new TransactionCallbackWithoutResult() { @Override public void doInTransactionWithoutResult(final TransactionStatus status) { repositoryFileDao.deleteLocalePropertiesForFile(repoFile2, "xx"); } }); // locale properties do not exist, no change in available locales updatedRepoFile = repo.getFile(file.getPath(), true); locales = repositoryFileDao.getAvailableLocalesForFile(updatedRepoFile); assertEquals(2, locales.size()); logout(); }
From source file:org.pentaho.platform.repository2.unified.DefaultUnifiedRepositoryContentTest.java
@Test public void testLocalePropertiesMap() throws Exception { loginAsSysTenantAdmin();//from w ww. ja v a 2s . c o m ITenant tenantAcme = tenantManager.createTenant(systemTenant, TENANT_ID_ACME, tenantAdminRoleName, tenantAuthenticatedRoleName, ANONYMOUS_ROLE_NAME); userRoleDao.createUser(tenantAcme, USERNAME_SUZY, PASSWORD, "", new String[] { tenantAdminRoleName }); logout(); login(USERNAME_SUZY, tenantAcme, new String[] { tenantAdminRoleName, tenantAuthenticatedRoleName }); // Create file final String fileName = "locale.sample"; RepositoryFile file = createSampleFile(ClientRepositoryPaths.getUserHomeFolderPath(USERNAME_SUZY), fileName, "test", false, 123); // 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(); txnTemplate.execute(new TransactionCallbackWithoutResult() { public void doInTransactionWithoutResult(final TransactionStatus status) { repositoryFileDao.deleteLocalePropertiesForFile(repoFile1, "es"); } }); // assert deleted locale updatedRepoFile = repo.getFile(file.getPath(), true); List<Locale> locales = repositoryFileDao.getAvailableLocalesForFile(updatedRepoFile); assertEquals(2, locales.size()); // test successful delete locale properties final RepositoryFile repoFile2 = updatedRepoFile.clone(); txnTemplate.execute(new TransactionCallbackWithoutResult() { public void doInTransactionWithoutResult(final TransactionStatus status) { repositoryFileDao.deleteLocalePropertiesForFile(repoFile2, "xx"); } }); // locale properties do not exist, no change in available locales updatedRepoFile = repo.getFile(file.getPath(), true); locales = repositoryFileDao.getAvailableLocalesForFile(updatedRepoFile); assertEquals(2, locales.size()); logout(); }
From source file:org.pentaho.platform.repository2.unified.DefaultUnifiedRepositorySpecialCharacterTest.java
@Test public void testLocalePropertiesMap() throws Exception { login(sysAdminUserName, systemTenant, new String[] { tenantAdminRoleName, tenantAuthenticatedRoleName }); ITenant tenantAcme = tenantManager.createTenant(systemTenant, TENANT_ID_ACME, tenantAdminRoleName, tenantAuthenticatedRoleName, "Anonymous"); userRoleDao.createUser(tenantAcme, USERNAME_SUZY, "password", "", new String[] { tenantAdminRoleName }); logout();//from w w w .j a v a 2 s . c o m login(USERNAME_SUZY, tenantAcme, new String[] { tenantAdminRoleName, tenantAuthenticatedRoleName }); // Create file final String fileName = "locale.[~!@#$%^&*(){}|.,]-=_+|;'?<>~`.sample"; RepositoryFile file = createSampleFile(ClientRepositoryPaths.getUserHomeFolderPath(USERNAME_SUZY), fileName, "test", false, 123); // 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(); txnTemplate.execute(new TransactionCallbackWithoutResult() { public void doInTransactionWithoutResult(final TransactionStatus status) { repositoryFileDao.deleteLocalePropertiesForFile(repoFile1, "es"); } }); // assert deleted locale updatedRepoFile = repo.getFile(file.getPath(), true); List<Locale> locales = repositoryFileDao.getAvailableLocalesForFile(updatedRepoFile); assertEquals(2, locales.size()); // test successful delete locale properties final RepositoryFile repoFile2 = updatedRepoFile.clone(); txnTemplate.execute(new TransactionCallbackWithoutResult() { public void doInTransactionWithoutResult(final TransactionStatus status) { repositoryFileDao.deleteLocalePropertiesForFile(repoFile2, "xx"); } }); // locale properties do not exist, no change in available locales updatedRepoFile = repo.getFile(file.getPath(), true); locales = repositoryFileDao.getAvailableLocalesForFile(updatedRepoFile); assertEquals(2, locales.size()); logout(); }
From source file:org.pentaho.platform.repository2.unified.DefaultUnifiedRepositorySpecialCharacterTest.java
protected void createUserHomeFolder(final ITenant theTenant, final String theUsername) { IPentahoSession origPentahoSession = PentahoSessionHolder.getSession(); Authentication origAuthentication = SecurityContextHolder.getContext().getAuthentication(); StandaloneSession pentahoSession = new StandaloneSession(repositoryAdminUsername); pentahoSession.setAuthenticated(null, repositoryAdminUsername); PentahoSessionHolder.setSession(pentahoSession); try {//from w ww . ja v a 2 s. c o m txnTemplate.execute(new TransactionCallbackWithoutResult() { public void doInTransactionWithoutResult(final TransactionStatus status) { Builder aclsForUserHomeFolder = null; Builder aclsForTenantHomeFolder = null; ITenant tenant = null; String username = null; if (theTenant == null) { tenant = getTenant(username, true); username = getPrincipalName(theUsername, true); } else { tenant = theTenant; username = theUsername; } if (tenant == null || tenant.getId() == null) { tenant = getCurrentTenant(); } if (tenant == null || tenant.getId() == null) { tenant = JcrTenantUtils.getDefaultTenant(); } RepositoryFile userHomeFolder = null; String userId = userNameUtils.getPrincipleId(theTenant, username); final RepositoryFileSid userSid = new RepositoryFileSid(userId); RepositoryFile tenantHomeFolder = null; RepositoryFile tenantRootFolder = null; // Get the Tenant Root folder. If the Tenant Root folder does not exist then exit. tenantRootFolder = repositoryFileDao .getFileByAbsolutePath(ServerRepositoryPaths.getTenantRootFolderPath(theTenant)); if (tenantRootFolder != null) { // Try to see if Tenant Home folder exist tenantHomeFolder = repositoryFileDao .getFileByAbsolutePath(ServerRepositoryPaths.getTenantHomeFolderPath(theTenant)); if (tenantHomeFolder == null) { String ownerId = userNameUtils.getPrincipleId(theTenant, username); RepositoryFileSid ownerSid = new RepositoryFileSid(ownerId, Type.USER); String tenantAuthenticatedRoleId = roleNameUtils.getPrincipleId(theTenant, tenantAuthenticatedRoleName); RepositoryFileSid tenantAuthenticatedRoleSid = new RepositoryFileSid( tenantAuthenticatedRoleId, Type.ROLE); aclsForTenantHomeFolder = new Builder(userSid).ace(tenantAuthenticatedRoleSid, EnumSet.of(RepositoryFilePermission.READ)); aclsForUserHomeFolder = new Builder(userSid).ace(ownerSid, EnumSet.of(RepositoryFilePermission.ALL)); tenantHomeFolder = repositoryFileDao.createFolder(tenantRootFolder.getId(), new RepositoryFile.Builder(ServerRepositoryPaths.getTenantHomeFolderName()) .folder(true).build(), aclsForTenantHomeFolder.build(), "tenant home folder"); } else { String ownerId = userNameUtils.getPrincipleId(theTenant, username); RepositoryFileSid ownerSid = new RepositoryFileSid(ownerId, Type.USER); aclsForUserHomeFolder = new Builder(userSid).ace(ownerSid, EnumSet.of(RepositoryFilePermission.ALL)); } // now check if user's home folder exist userHomeFolder = repositoryFileDao.getFileByAbsolutePath( ServerRepositoryPaths.getUserHomeFolderPath(theTenant, username)); if (userHomeFolder == null) { userHomeFolder = repositoryFileDao.createFolder(tenantHomeFolder.getId(), new RepositoryFile.Builder(username).folder(true).build(), aclsForUserHomeFolder.build(), "user home folder"); //$NON-NLS-1$ } } } }); } finally { // Switch our identity back to the original user. PentahoSessionHolder.setSession(origPentahoSession); SecurityContextHolder.getContext().setAuthentication(origAuthentication); } }
From source file:org.pentaho.platform.repository2.unified.DefaultUnifiedRepositoryTest.java
@Test public void testLocalePropertiesMap() throws Exception { login(sysAdminUserName, systemTenant, new String[] { tenantAdminRoleName, tenantAuthenticatedRoleName }); ITenant tenantAcme = tenantManager.createTenant(systemTenant, TENANT_ID_ACME, tenantAdminRoleName, tenantAuthenticatedRoleName, "Anonymous"); userRoleDao.createUser(tenantAcme, USERNAME_SUZY, "password", "", new String[] { tenantAdminRoleName }); logout();/*from ww w. java2 s. c om*/ login(USERNAME_SUZY, tenantAcme, new String[] { tenantAdminRoleName, tenantAuthenticatedRoleName }); // Create file final String fileName = "locale.sample"; RepositoryFile file = createSampleFile(ClientRepositoryPaths.getUserHomeFolderPath(USERNAME_SUZY), fileName, "test", false, 123); // 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(); txnTemplate.execute(new TransactionCallbackWithoutResult() { public void doInTransactionWithoutResult(final TransactionStatus status) { repositoryFileDao.deleteLocalePropertiesForFile(repoFile1, "es"); } }); // assert deleted locale updatedRepoFile = repo.getFile(file.getPath(), true); List<Locale> locales = repositoryFileDao.getAvailableLocalesForFile(updatedRepoFile); assertEquals(2, locales.size()); // test successful delete locale properties final RepositoryFile repoFile2 = updatedRepoFile.clone(); txnTemplate.execute(new TransactionCallbackWithoutResult() { public void doInTransactionWithoutResult(final TransactionStatus status) { repositoryFileDao.deleteLocalePropertiesForFile(repoFile2, "xx"); } }); // locale properties do not exist, no change in available locales updatedRepoFile = repo.getFile(file.getPath(), true); locales = repositoryFileDao.getAvailableLocalesForFile(updatedRepoFile); assertEquals(2, locales.size()); logout(); }
From source file:org.pentaho.platform.repository2.unified.jcr.DumpToFilePentahoSystemListener.java
@Override public boolean startup(IPentahoSession pentahoSession) { Mode tmpMode = null;/*from w ww .jav a2 s .c o m*/ if (!StringUtils.hasText(fileName)) { fileName = System.getProperty(PROP_DUMP_TO_FILE); tmpMode = Mode.CUSTOM; if (fileName == null) { fileName = System.getProperty(PROP_DUMP_TO_FILE_SYSTEM_VIEW); tmpMode = Mode.SYS; } if (fileName == null) { fileName = System.getProperty(PROP_DUMP_TO_FILE_DOCUMENT_VIEW); tmpMode = Mode.DOC; } } else { tmpMode = Mode.CUSTOM; } final Mode mode = tmpMode; if (fileName != null) { final JcrTemplate jcrTemplate = PentahoSystem.get(JcrTemplate.class, "jcrTemplate", pentahoSession); //$NON-NLS-1$ TransactionTemplate txnTemplate = PentahoSystem.get(TransactionTemplate.class, "jcrTransactionTemplate", //$NON-NLS-1$ pentahoSession); String repositoryAdminUsername = PentahoSystem.get(String.class, "repositoryAdminUsername", //$NON-NLS-1$ pentahoSession); final String ZIP_EXTENSION = ".zip"; //$NON-NLS-1$ // let the user know this is a zip if (!fileName.endsWith(ZIP_EXTENSION)) { fileName = fileName + ZIP_EXTENSION; } logger.debug(String.format("dumping repository to file \"%s\"", fileName)); //$NON-NLS-1$ ZipOutputStream tmpOut = null; try { tmpOut = new ZipOutputStream( new BufferedOutputStream(FileUtils.openOutputStream(new File(fileName)))); } catch (IOException e) { IOUtils.closeQuietly(tmpOut); throw new RuntimeException(e); } final ZipOutputStream out = tmpOut; // stash existing session IPentahoSession origPentahoSession = PentahoSessionHolder.getSession(); // run as repo super user PentahoSessionHolder.setSession(createRepositoryAdminPentahoSession(repositoryAdminUsername)); try { txnTemplate.execute(new TransactionCallbackWithoutResult() { public void doInTransactionWithoutResult(final TransactionStatus status) { jcrTemplate.execute(new JcrCallback() { public Object doInJcr(final Session session) throws RepositoryException, IOException { switch (mode) { case SYS: { final boolean SKIP_BINARY = false; final boolean NO_RECURSE = false; out.putNextEntry(new ZipEntry("repository.xml")); //$NON-NLS-1$ session.exportSystemView("/", out, SKIP_BINARY, NO_RECURSE); //$NON-NLS-1$ return null; } case DOC: { final boolean SKIP_BINARY = false; final boolean NO_RECURSE = false; out.putNextEntry(new ZipEntry("repository.xml")); //$NON-NLS-1$ session.exportDocumentView("/", out, SKIP_BINARY, NO_RECURSE); //$NON-NLS-1$ return null; } default: { out.putNextEntry(new ZipEntry("repository.txt")); //$NON-NLS-1$ session.getRootNode().accept(new DumpToFileTraversingItemVisitor(out)); return null; } } } }); } }); } finally { // restore original session PentahoSessionHolder.setSession(origPentahoSession); IOUtils.closeQuietly(out); } logger.debug(String.format("dumped repository to file \"%s\"", fileName)); //$NON-NLS-1$ } return true; }
From source file:org.pentaho.platform.repository2.unified.jcr.JcrRepositoryDumpToFile.java
public void execute() { if (filename != null) { final String ZIP_EXTENSION = ".zip"; //$NON-NLS-1$ // let the user know this is a zip if (!filename.endsWith(ZIP_EXTENSION)) { filename = filename + ZIP_EXTENSION; }/* w w w .j ava 2 s .c o m*/ logger.debug(String.format("dumping repository to file \"%s\"", filename)); //$NON-NLS-1$ ZipOutputStream tmpOut = null; try { tmpOut = new ZipOutputStream( new BufferedOutputStream(FileUtils.openOutputStream(new File(filename)))); } catch (IOException e) { IOUtils.closeQuietly(tmpOut); throw new RuntimeException(e); } final ZipOutputStream out = tmpOut; // stash existing session IPentahoSession origPentahoSession = PentahoSessionHolder.getSession(); // run as repo super user PentahoSessionHolder.setSession(createRepositoryAdminPentahoSession(repositoryAdminUsername)); try { txnTemplate.execute(new TransactionCallbackWithoutResult() { public void doInTransactionWithoutResult(final TransactionStatus status) { jcrTemplate.execute(new JcrCallback() { public Object doInJcr(final Session session) throws RepositoryException, IOException { switch (mode) { case SYS: { final boolean SKIP_BINARY = false; final boolean NO_RECURSE = false; out.putNextEntry(new ZipEntry("repository.xml")); //$NON-NLS-1$ session.exportSystemView("/", out, SKIP_BINARY, NO_RECURSE); //$NON-NLS-1$ return null; } case DOC: { final boolean SKIP_BINARY = false; final boolean NO_RECURSE = false; out.putNextEntry(new ZipEntry("repository.xml")); //$NON-NLS-1$ session.exportDocumentView("/", out, SKIP_BINARY, NO_RECURSE); //$NON-NLS-1$ return null; } default: { out.putNextEntry(new ZipEntry("repository.txt")); //$NON-NLS-1$ session.getRootNode().accept(new DumpToFileTraversingItemVisitor(out)); return null; } } } }); } }); } finally { // restore original session PentahoSessionHolder.setSession(origPentahoSession); IOUtils.closeQuietly(out); } logger.debug(String.format("dumped repository to file \"%s\"", filename)); //$NON-NLS-1$ } }
From source file:org.pentaho.platform.repository2.unified.lifecycle.AbstractBackingRepositoryLifecycleManager.java
public void addMetadataToRepository(final String metadataProperty) { txnTemplate.execute(new TransactionCallbackWithoutResult() { public void doInTransactionWithoutResult(final TransactionStatus status) { adminJcrTemplate.execute(new JcrCallback() { @Override//from w w w.java 2s. c o m public Object doInJcr(Session session) throws IOException, RepositoryException { new PentahoJcrConstants(session); String absPath = ServerRepositoryPaths.getPentahoRootFolderPath(); RepositoryFile rootFolder = JcrRepositoryFileUtils.getFileByAbsolutePath(session, absPath, pathConversionHelper, null, false, null); if (rootFolder != null) { Map<String, Serializable> metadataMap = JcrRepositoryFileUtils.getFileMetadata(session, rootFolder.getId()); if (metadataMap == null) { metadataMap = new HashMap<String, Serializable>(); } metadataMap.put(metadataProperty, Boolean.TRUE); JcrRepositoryFileUtils.setFileMetadata(session, rootFolder.getId(), metadataMap); } else { throw new IllegalStateException("Repository has not been initialized properly"); } session.save(); return null; } }); } }); }
From source file:org.sakaiproject.assignment.impl.AssignmentServiceImpl.java
@Override public HttpAccess getHttpAccess() { return (req, res, ref, copyrightAcceptedRefs) -> { if (sessionManager.getCurrentSessionUserId() == null) { log.warn("Only logged in users can access assignment downloads"); } else {/*from w ww. j a v a2 s. com*/ // determine the type of download to create using the reference that was requested AssignmentReferenceReckoner.AssignmentReference refReckoner = AssignmentReferenceReckoner.reckoner() .reference(ref.getReference()).reckon(); if (REFERENCE_ROOT.equals("/" + refReckoner.getType())) { // don't process any references that are not of type assignment switch (refReckoner.getSubtype()) { case REF_TYPE_CONTENT: case REF_TYPE_ASSIGNMENT: String date = DateTimeFormatter.ofPattern("yyyyMMddHHmmss") .withZone(userTimeService.getLocalTimeZone().toZoneId()) .format(ZonedDateTime.now()); String queryString = req.getQueryString(); if (StringUtils.isNotBlank(refReckoner.getId())) { // if subtype is assignment then were downloading all submissions for an assignment try { Assignment a = getAssignment(refReckoner.getId()); String filename = a.getTitle() + "_" + date; res.setContentType("application/zip"); res.setHeader("Content-Disposition", "attachment; filename = \"" + filename + ".zip\""); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { try (OutputStream out = res.getOutputStream()) { getSubmissionsZip(out, ref.getReference(), queryString); } catch (Exception e) { log.warn("Could not stream the submissions for reference: {}", ref.getReference(), e); } } }); } catch (Exception e) { log.warn("Could not find assignment for ref = {}", ref.getReference(), e); } } else { String filename = "bulk_download_" + date; // if subtype is assignment and there is no assignmentId then were downloading grades res.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); res.setHeader("Content-Disposition", "attachment; filename = \"export_grades_" + filename + ".xlsx\""); try (OutputStream out = res.getOutputStream()) { gradeSheetExporter.getGradesSpreadsheet(out, ref.getReference(), queryString); } catch (Exception e) { log.warn("Could not stream the grades for reference: {}", ref.getReference(), e); } } break; case REF_TYPE_SUBMISSION: default: log.warn("Assignments download unhandled download type for reference: {}", ref.getReference()); } } } }; }
From source file:org.sakaiproject.portal.service.BullhornServiceImpl.java
public void update(Observable o, final Object arg) { if (arg instanceof Event) { Event e = (Event) arg; String event = e.getEvent(); // We add this comparation with UNKNOWN_USER because implementation of BaseEventTrackingService // UNKNOWN_USER is an user in a server without session. if (HANDLED_EVENTS.contains(event) && !EventTrackingService.UNKNOWN_USER.equals(e.getUserId())) { String ref = e.getResource(); String context = e.getContext(); String[] pathParts = ref.split("/"); String from = e.getUserId(); long at = e.getEventTime().getTime(); try { BullhornHandler handler = handlerMap.get(event); if (handler != null) { Optional<List<BullhornData>> result = handler.handleEvent(e, countCache); if (result.isPresent()) { result.get().forEach(bd -> { if (bd.isSocial()) { doSocialInsert(bd.getFrom(), bd.getTo(), event, ref, e.getEventTime(), bd.getUrl()); } else { doAcademicInsert(from, bd.getTo(), event, ref, bd.getTitle(), bd.getSiteId(), e.getEventTime(), bd.getUrl()); }//from ww w . j a v a 2 s. c om }); } } else if (LessonBuilderEvents.COMMENT_CREATE.equals(event)) { try { long commentId = Long.parseLong(pathParts[pathParts.length - 1]); SimplePageComment comment = simplePageToolDao.findCommentById(commentId); String url = simplePageToolDao.getPageUrl(comment.getPageId()); if (url != null) { List<String> done = new ArrayList<>(); // Alert tutor types. List<User> receivers = securityService.unlockUsers( SimplePage.PERMISSION_LESSONBUILDER_UPDATE, "/site/" + context); for (User receiver : receivers) { String to = receiver.getId(); if (!to.equals(from)) { doAcademicInsert(from, to, event, ref, "title", context, e.getEventTime(), url); done.add(to); countCache.remove(to); } } // Get all the comments in the same item List<SimplePageComment> comments = simplePageToolDao .findCommentsOnItems(Arrays.asList(new Long[] { comment.getItemId() })); if (comments.size() > 1) { // Not the first, alert all the other commenters unless they already have been for (SimplePageComment c : comments) { String to = c.getAuthor(); if (!to.equals(from) && !done.contains(to)) { doAcademicInsert(from, to, event, ref, "title", context, e.getEventTime(), url); done.add(to); countCache.remove(to); } } } } else { log.error("null url for page {}", comment.getPageId()); } } catch (NumberFormatException nfe) { log.error("Caught number format exception whilst handling events", nfe); } } else if (SiteService.EVENT_SITE_PUBLISH.equals(event)) { final String siteId = pathParts[2]; TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager); transactionTemplate.execute(new TransactionCallbackWithoutResult() { protected void doInTransactionWithoutResult(TransactionStatus status) { final List<BullhornAlert> deferredAlerts = sessionFactory.getCurrentSession() .createCriteria(BullhornAlert.class).add(Restrictions.eq("deferred", true)) .add(Restrictions.eq("siteId", siteId)).list(); for (BullhornAlert da : deferredAlerts) { da.setDeferred(false); sessionFactory.getCurrentSession().update(da); countCache.remove(da.getToUser()); } } }); } } catch (Exception ex) { log.error("Caught exception whilst handling events", ex); } } } }