Package org.jasig.portal.i18n

Examples of org.jasig.portal.i18n.LocaleManager


        try
        {
            // fix hard coded 1 later for multiple profiles
            IUserProfile profile = userLayoutStore.getUserProfileByFname(owner, "default");
            profile.setLocaleManager(new LocaleManager(owner, new Locale[] { locale }));
           
            // see if we have structure & theme stylesheets for this user yet.
            // If not then fall back on system's selected stylesheets.
            if (profile.getStructureStylesheetId() == 0 ||
                    profile.getThemeStylesheetId() == 0)
View Full Code Here


      SortedSet<ChannelCategoryBean> categories = new TreeSet<ChannelCategoryBean>();
      SortedSet<ChannelBean> channels = new TreeSet<ChannelBean>();

      // get user locale
      Locale[] locales = localeStore.getUserLocales(user);
      LocaleManager localeManager = new LocaleManager(user, locales);
      Locale locale = localeManager.getLocales()[0];
   
    // add the root category and all its children to the registry
    PortletCategory rootCategory = portletCategoryRegistry.getTopLevelPortletCategory();
    categories.add(addChildren(request, rootCategory, allChannels, user, type, locale));
View Full Code Here

            }
        });
    }

    protected Document getPersonalUserLayout (final IPerson person, final IUserProfile profile) {
        final LocaleManager localeManager = profile.getLocaleManager();

        return jdbcOperations.execute(new ConnectionCallback<Document>() {
            @Override
            public Document doInConnection(Connection con) throws SQLException, DataAccessException {

                ResultSet rs;
                int userId = person.getID();
                final int realUserId = userId;
                Document doc = DocumentFactory.getThreadDocument();
                Element root = doc.createElement("layout");
                final Statement stmt = con.createStatement();
                // A separate statement is needed so as not to interfere with ResultSet
                // of statements used for queries
                Statement insertStmt = con.createStatement();
                try {
                    long startTime = System.currentTimeMillis();
                    // eventually, we need to fix template layout implementations so you can just do this:
                    //        int layoutId=profile.getLayoutId();
                    // but for now:
                    int layoutId = getLayoutID(userId, profile.getProfileId());

                    if (layoutId == 0) { // First time, grab the default layout for this user
                        final Tuple<Integer, Integer> userLayoutIds = transactionOperations.execute(new TransactionCallback<Tuple<Integer, Integer>>() {
                            @Override
                            public Tuple<Integer, Integer> doInTransaction(TransactionStatus status) {
                                return jdbcOperations.execute(new ConnectionCallback<Tuple<Integer, Integer>>() {
                                    @Override
                                    public Tuple<Integer, Integer> doInConnection(Connection con) throws SQLException, DataAccessException {

                                        int newLayoutId;
                                        int newUserId;

                                        String sQuery = "SELECT USER_DFLT_USR_ID, USER_DFLT_LAY_ID FROM UP_USER WHERE USER_ID=" + realUserId;
                                        logger.debug("getUserLayout(): {}", sQuery);
                                        ResultSet rs = stmt.executeQuery(sQuery);
                                        try {
                                            boolean hasRow = rs.next();
                                            newUserId = rs.getInt(1);
                                            newLayoutId = rs.getInt(2);
                                        } finally {
                                            rs.close();
                                        }

                                        // Make sure the next struct id is set in case the user adds a channel
                                        sQuery = "SELECT NEXT_STRUCT_ID FROM UP_USER WHERE USER_ID=" + newUserId;
                                        logger.debug("getUserLayout(): {}", sQuery);
                                        int nextStructId;
                                        rs = stmt.executeQuery(sQuery);
                                        try {
                                            boolean hasRow = rs.next();
                                            nextStructId = rs.getInt(1);
                                        } finally {
                                            rs.close();
                                        }

                                        int realNextStructId = 0;

                                        if (realUserId != newUserId) {
                                            // But never make the existing value SMALLER, change it only to make it LARGER
                                            // (so, get existing value)
                                            sQuery = "SELECT NEXT_STRUCT_ID FROM UP_USER WHERE USER_ID=" + realUserId;
                                            logger.debug("getUserLayout(): {}", sQuery);
                                            rs = stmt.executeQuery(sQuery);
                                            try {
                                                boolean hasRow = rs.next();
                                                realNextStructId = rs.getInt(1);
                                            } finally {
                                                rs.close();
                                            }
                                        }

                                        if (nextStructId > realNextStructId) {
                                            sQuery = "UPDATE UP_USER SET NEXT_STRUCT_ID=" + nextStructId + " WHERE USER_ID=" + realUserId;
                                            logger.debug("getUserLayout(): {}", sQuery);
                                            stmt.executeUpdate(sQuery);
                                        }

                                        return new Tuple<Integer, Integer>(newUserId, newLayoutId);

                                    }
                                });
                            }
                        });

                        userId = userLayoutIds.first;
                        layoutId = userLayoutIds.second;
                    }

                    int firstStructId = -1;

                    //Flags to enable a default layout lookup if it's needed
                    boolean foundLayout = false;
                    boolean triedDefault = false;

                    //This loop is used to ensure a layout is found for a user. It tries
                    //looking up the layout for the current userID. If one isn't found
                    //the userID is replaced with the template user ID for this user and
                    //the layout is searched for again. This loop should only ever loop once.
                    do {
                        String sQuery = "SELECT INIT_STRUCT_ID FROM UP_USER_LAYOUT WHERE USER_ID=" + userId + " AND LAYOUT_ID = " + layoutId;
                        logger.debug("getUserLayout(): {}", sQuery);
                        rs = stmt.executeQuery(sQuery);
                        try {
                            if (rs.next()) {
                                firstStructId = rs.getInt(1);
                            } else {
                                throw new RuntimeException("getUserLayout(): No INIT_STRUCT_ID in UP_USER_LAYOUT for USER_ID: " + userId + " and LAYOUT_ID: " + layoutId);
                            }
                        } finally {
                            rs.close();
                        }

                        String sql;
                        if (localeAware) {
                            // This needs to be changed to get the localized strings
                            sql = "SELECT ULS.STRUCT_ID,ULS.NEXT_STRUCT_ID,ULS.CHLD_STRUCT_ID,ULS.CHAN_ID,ULS.NAME,ULS.TYPE,ULS.HIDDEN,"+
                                    "ULS.UNREMOVABLE,ULS.IMMUTABLE";
                        else {
                            sql = "SELECT ULS.STRUCT_ID,ULS.NEXT_STRUCT_ID,ULS.CHLD_STRUCT_ID,ULS.CHAN_ID,ULS.NAME,ULS.TYPE,ULS.HIDDEN,"+
                                    "ULS.UNREMOVABLE,ULS.IMMUTABLE";
                        }
                        if (databaseMetadata.supportsOuterJoins()) {
                            sql += ",USP.STRUCT_PARM_NM,USP.STRUCT_PARM_VAL FROM " + databaseMetadata.getJoinQuery().getQuery("layout");
                        } else {
                            sql += " FROM UP_LAYOUT_STRUCT ULS WHERE ";
                        }
                        sql += " ULS.USER_ID=" + userId + " AND ULS.LAYOUT_ID=" + layoutId + " ORDER BY ULS.STRUCT_ID";
                        logger.debug("getUserLayout(): {}", sql);
                        rs = stmt.executeQuery(sql);

                        //check for rows in the result set
                        foundLayout = rs.next();

                        if (!foundLayout && !triedDefault && userId == realUserId) {
                            //If we didn't find any rows and we haven't tried the default user yet
                            triedDefault = true;
                            rs.close();

                            //Get the default user ID and layout ID
                            sQuery = "SELECT USER_DFLT_USR_ID, USER_DFLT_LAY_ID FROM UP_USER WHERE USER_ID=" + userId;
                            logger.debug("getUserLayout(): {}", sQuery);
                            rs = stmt.executeQuery(sQuery);
                            try {
                                rs.next();
                                userId = rs.getInt(1);
                                layoutId = rs.getInt(2);
                            } finally {
                                rs.close();
                            }
                        }
                        else {
                            //We tried the default or actually found a layout
                            break;
                        }
                    } while (!foundLayout);

                    HashMap layoutStructure = new HashMap();
                    StringBuffer structChanIds = new StringBuffer();

                    try {
                        int lastStructId = 0;
                        LayoutStructure ls = null;
                        String sepChar = "";
                        if (foundLayout) {
                            int structId = rs.getInt(1);
                            // Result Set returns 0 by default if structId was null
                            // Except if you are using poolman 2.0.4 in which case you get -1 back
                            if (rs.wasNull()) {
                                structId = 0;
                            }
                            readLayout: while (true) {

                                int nextId = rs.getInt(2);
                                if (rs.wasNull()) {
                                    nextId = 0;
                                }
                                int childId = rs.getInt(3);
                                if (rs.wasNull()) {
                                    childId = 0;
                                }
                                int chanId = rs.getInt(4);
                                if (rs.wasNull()) {
                                    chanId = 0;
                                }
                                String temp5=rs.getString(5); // Some JDBC drivers require columns accessed in order
                                String temp6=rs.getString(6); // Access 5 and 6 now, save till needed.

                                // uPortal i18n
                                int name_index, value_index;
                                if (localeAware) {
                                    Locale[] locales = localeManager.getLocales();
                                    String locale = locales[0].toString();
                                    ls = new LayoutStructure(
                                            structId, nextId, childId, chanId,
                                            rs.getString(7),rs.getString(8),rs.getString(9),
                                            locale);
View Full Code Here

                                    throw new IllegalStateException(msg);
                                }
                            }
                            IUserProfile userProfile = new UserProfile(profileId, temp2, temp3,temp4, layoutId, structSsId, themeSsId);
                            final Locale[] userLocales = localeStore.getUserLocales(person);
                            userProfile.setLocaleManager(new LocaleManager(person, userLocales));
                            return userProfile;
                        }
                        else {
                            throw new RuntimeException("Unable to find User Profile for user " + userId + " and profile " + profileId);
                        }
View Full Code Here

                                    throw new IllegalStateException(msg);
                                }
                            }
                            UserProfile userProfile = new UserProfile(profileId, profileFname, profileName, profileDesc, layoutId, structSsId, themeSsId);
                            final Locale[] userLocales = localeStore.getUserLocales(person);
                            userProfile.setLocaleManager(new LocaleManager(person, userLocales));
                            return userProfile;
                        }

                        /* Try to copy the template profile. */
                        logger.debug("Copying template profile {} to user {}", profileFname, person.getID());
                        rs.close();
                        pstmt.close();
                        pstmt = con.prepareStatement("SELECT USER_DFLT_USR_ID FROM UP_USER WHERE USER_ID=?");
                        pstmt.setInt(1, person.getID());
                        rs = pstmt.executeQuery();
                        if(rs.next()) {
                            int defaultProfileUser = rs.getInt(1);
                            if (rs.wasNull()) {
                                throw new RuntimeException("Need to clone the '" + profileFname + "' profile from template user for " + person + " but they have no template user");
                            }

                            IPerson defaultProfilePerson = new PersonImpl();
                            defaultProfilePerson.setID(defaultProfileUser);
                            if(defaultProfilePerson.getID() != person.getID()) {
                                UserProfile templateProfile = getUserProfileByFname(defaultProfilePerson,profileFname);
                                if(templateProfile != null) {
                                    UserProfile newUserProfile = new UserProfile(templateProfile);
                                    final Locale[] userLocales = localeStore.getUserLocales(person);
                                    newUserProfile.setLayoutId(0);
                                    newUserProfile = addUserProfile(person,newUserProfile);

                                    newUserProfile.setLocaleManager(new LocaleManager(person, userLocales));
                                    return newUserProfile;
                                }
                            }
                        }

View Full Code Here

                return userInstance;
            }
        }

        // Create either a UserInstance or a GuestUserInstance
        final LocaleManager localeManager = this.getLocaleManager(request, person);
        final String userAgent = this.getUserAgent(request);
        final IUserProfile userProfile = this.getUserProfile(request, person, localeManager, userAgent);

        //Create the user layout manager and user instance object
        IUserLayoutManager userLayoutManager = userLayoutManagerFactory.getUserLayoutManager(person, userProfile);
View Full Code Here

    }
   
    protected LocaleManager getLocaleManager(HttpServletRequest request, IPerson person) {
        final String acceptLanguage = request.getHeader("Accept-Language");
        final Locale[] userLocales = localeStore.getUserLocales(person);
        return new LocaleManager(person, userLocales, acceptLanguage);
    }
View Full Code Here

    }

    protected Locale getCurrentUserLocale(final HttpServletRequest request) {
        final IPerson person = personManager.getPerson(request);
        final Locale[] userLocales = localeStore.getUserLocales(person);
        final LocaleManager localeManager = new LocaleManager(person, userLocales);
        final Locale locale = localeManager.getLocales()[0];
        return locale;
    }
View Full Code Here

  public Locale getCurrentUserLocale(PortletRequest request) {
      final HttpServletRequest originalPortalRequest = this.portalRequestUtils.getPortletHttpRequest(request);
    IUserInstance ui = userInstanceManager.getUserInstance(originalPortalRequest);
    IUserPreferencesManager upm = ui.getPreferencesManager();
    final IUserProfile userProfile = upm.getUserProfile();
        LocaleManager localeManager = userProfile.getLocaleManager();
       
        // first check the session locales
        Locale[] sessionLocales = localeManager.getSessionLocales();
        if (sessionLocales != null && sessionLocales.length > 0) {
          return sessionLocales[0];
        }
       
        // if no session locales were found, check the user locales
        Locale[] userLocales = localeManager.getUserLocales();
        if (userLocales != null && userLocales.length > 0) {
            return userLocales[0];
        }
       
        // if no selected locale was found either in the session or user layout,
View Full Code Here

  public void updateUserLocale(HttpServletRequest request, String localeString) {

    IUserInstance ui = userInstanceManager.getUserInstance(request);
    IUserPreferencesManager upm = ui.getPreferencesManager();
        final IUserProfile userProfile = upm.getUserProfile();
        LocaleManager localeManager = userProfile.getLocaleManager();


        if (localeString != null) {
         
          // build a new Locale[] array from the specified locale
            Locale userLocale = parseLocale(localeString);
            Locale[] locales = new Locale[] { userLocale };
           
            // set this locale in the session
            localeManager.setSessionLocales(locales);
           
            // if the current user is logged in, also update the persisted
            // user locale
            final IPerson person = ui.getPerson();
            if (!person.isGuest()) {
                try {
                    localeManager.persistUserLocales(new Locale[] { userLocale });
                    localeStore.updateUserLocales(person, new Locale[] { userLocale });
                   
                    // remove person layout framgent from session since it contains some of the data in previous
                    // translation and won't be cleared until next logout-login (applies when using
                    // RDBMDistributedLayoutStore as user layout store).
View Full Code Here

TOP

Related Classes of org.jasig.portal.i18n.LocaleManager

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.