Example usage for org.springframework.transaction.support TransactionCallbackWithoutResult TransactionCallbackWithoutResult

List of usage examples for org.springframework.transaction.support TransactionCallbackWithoutResult TransactionCallbackWithoutResult

Introduction

In this page you can find the example usage for org.springframework.transaction.support TransactionCallbackWithoutResult TransactionCallbackWithoutResult.

Prototype

TransactionCallbackWithoutResult

Source Link

Usage

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);
            }
        }
    }
}