Author: mfranklin
Date: Tue Oct 16 02:32:51 2012
New Revision: 1398620

URL: http://svn.apache.org/viewvc?rev=1398620&view=rev
Log:
Updated user repository

Added:
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/MongoDbUserConverter.java
Modified:
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbUser.java
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageTemplateRepository.java
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbUserRepository.java

Modified: 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbUser.java
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbUser.java?rev=1398620&r1=1398619&r2=1398620&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbUser.java
 (original)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbUser.java
 Tue Oct 16 02:32:51 2012
@@ -19,12 +19,43 @@
 
 package org.apache.rave.portal.model;
 
+import com.google.common.collect.Lists;
 import org.apache.rave.portal.model.impl.UserImpl;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
+
+import java.util.Collection;
+import java.util.List;
 
 /**
  */
 public class MongoDbUser extends UserImpl {
+
+    private List<String> authorityCodes;
+
     public MongoDbUser(long id) {
         super(id);
     }
+
+    public MongoDbUser() {
+    }
+
+    public List<String> getAuthorityCodes() {
+        return authorityCodes;
+    }
+
+    public void setAuthorityCodes(List<String> authorityCodes) {
+        this.authorityCodes = authorityCodes;
+    }
+
+    @Override
+    public Collection<GrantedAuthority> getAuthorities() {
+        Collection<GrantedAuthority> grantedAuthorities = Lists.newArrayList();
+        if (authorityCodes != null) {
+            for (String code : authorityCodes) {
+                grantedAuthorities.add(new SimpleGrantedAuthority(code));
+            }
+        }
+        return grantedAuthorities;
+    }
 }

Added: 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/MongoDbUserConverter.java
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/MongoDbUserConverter.java?rev=1398620&view=auto
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/MongoDbUserConverter.java
 (added)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/MongoDbUserConverter.java
 Tue Oct 16 02:32:51 2012
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.rave.portal.model.conversion;
+
+import com.google.common.collect.Lists;
+import org.apache.rave.portal.model.MongoDbUser;
+import org.apache.rave.portal.model.User;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+import static org.apache.rave.portal.model.util.MongoDbModelUtil.generateId;
+
+@Component
+public class MongoDbUserConverter implements HydratingModelConverter<User, 
MongoDbUser> {
+    @Override
+    public void hydrate(MongoDbUser dehydrated) {
+        //NOOP
+    }
+
+    @Override
+    public Class<User> getSourceType() {
+        return User.class;
+    }
+
+    @Override
+    public MongoDbUser convert(User source) {
+        MongoDbUser user = source instanceof MongoDbUser ? 
((MongoDbUser)source) : new MongoDbUser();
+        List<String> authorityCodes = Lists.newArrayList();
+        for(GrantedAuthority authority : source.getAuthorities()) {
+            authorityCodes.add(authority.getAuthority());
+        }
+        updateProperties(source, user);
+        return user;
+    }
+
+    private void updateProperties(User source, MongoDbUser converted) {
+        converted.setId(source.getId() == null ? generateId() : 
source.getId());
+        converted.setUsername(source.getUsername());
+        converted.setEmail(source.getEmail());
+        converted.setDisplayName(source.getDisplayName());
+        converted.setAdditionalName(source.getUsername());
+        converted.setFamilyName(source.getFamilyName());
+        converted.setGivenName(source.getGivenName());
+        converted.setHonorificPrefix(source.getHonorificPrefix());
+        converted.setHonorificSuffix(source.getHonorificSuffix());
+        converted.setPreferredName(source.getPreferredName());
+        converted.setAboutMe(source.getAboutMe());
+        converted.setStatus(source.getStatus());
+        converted.setAddresses(source.getAddresses());
+        converted.setOrganizations(source.getOrganizations());
+        converted.setProperties(source.getProperties());
+        converted.setPassword(source.getPassword());
+        converted.setConfirmPassword(source.getConfirmPassword());
+        converted.setDefaultPageLayout(source.getDefaultPageLayout());
+        converted.setDefaultPageLayoutCode(source.getDefaultPageLayoutCode());
+        converted.setEnabled(source.isEnabled());
+        converted.setExpired(source.isExpired());
+        converted.setLocked(source.isLocked());
+        converted.setOpenId(source.getOpenId());
+        converted.setForgotPasswordHash(source.getForgotPasswordHash());
+        converted.setForgotPasswordTime(source.getForgotPasswordTime());
+    }
+}

Modified: 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageTemplateRepository.java
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageTemplateRepository.java?rev=1398620&r1=1398619&r2=1398620&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageTemplateRepository.java
 (original)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageTemplateRepository.java
 Tue Oct 16 02:32:51 2012
@@ -22,12 +22,17 @@ package org.apache.rave.portal.repositor
 import org.apache.rave.portal.model.PageTemplate;
 import org.apache.rave.portal.model.PageType;
 import org.apache.rave.portal.model.conversion.MongoDbConverter;
+import org.apache.rave.portal.model.impl.PageTemplateImpl;
 import org.apache.rave.portal.repository.PageTemplateRepository;
+import org.apache.rave.util.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.mongodb.core.MongoOperations;
+import org.springframework.data.mongodb.core.query.Query;
 
 import java.util.List;
 
+import static org.springframework.data.mongodb.core.query.Criteria.where;
+
 /**
  */
 public class MongoDbPageTemplateRepository implements PageTemplateRepository {
@@ -41,11 +46,17 @@ public class MongoDbPageTemplateReposito
 
     @Override
     public List<PageTemplate> getAll() {
-        return null;
+        List<PageTemplateImpl> templates = 
template.findAll(PageTemplateImpl.class, COLLECTION);
+        for(PageTemplateImpl temp : templates) {
+            converter.hydrate(temp, PageTemplate.class);
+        }
+        return CollectionUtils.<PageTemplate>toBaseTypedList(templates);
     }
 
     @Override
     public PageTemplate getDefaultPage(PageType pageType) {
-        return null;
+        PageTemplate temp = template.findOne(new 
Query(where("pageType").is(pageType).andOperator(where("defaultTemplate").is(true))),
 PageTemplateImpl.class, COLLECTION);
+        converter.hydrate(temp, PageTemplate.class);
+        return temp;
     }
 }

Modified: 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbUserRepository.java
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbUserRepository.java?rev=1398620&r1=1398619&r2=1398620&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbUserRepository.java
 (original)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbUserRepository.java
 Tue Oct 16 02:32:51 2012
@@ -23,17 +23,26 @@ import org.apache.rave.portal.model.Mong
 import org.apache.rave.portal.model.User;
 import org.apache.rave.portal.model.conversion.MongoDbConverter;
 import org.apache.rave.portal.repository.UserRepository;
+import org.apache.rave.util.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.mongodb.core.MongoOperations;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
 
+import static org.springframework.data.mongodb.core.query.Criteria.where;
+
+
 /**
  */
 @Repository
 public class MongoDbUserRepository implements UserRepository {
 
+    public static final String COLLECTION = "person";
+    public static final Class<MongoDbUser> CLAZZ = MongoDbUser.class;
+
     @Autowired
     private MongoOperations template;
 
@@ -42,67 +51,89 @@ public class MongoDbUserRepository imple
 
     @Override
     public User getByUsername(String username) {
-        return null;
+        return hydrate(template.findOne(query(where("username").is(username)), 
CLAZZ, COLLECTION));
     }
 
     @Override
     public User getByUserEmail(String userEmail) {
-        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+        return hydrate(template.findOne(query(where("email").is(userEmail)), 
CLAZZ, COLLECTION));
     }
 
     @Override
     public User getByOpenId(String openId) {
-        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+        return hydrate(template.findOne(query(where("openId").is(openId)), 
CLAZZ, COLLECTION));
     }
 
     @Override
     public List<User> getLimitedList(int offset, int pageSize) {
-        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+        Query query = new Query().skip(offset).limit(pageSize);
+        return hydrate(template.find(query, CLAZZ, COLLECTION));
     }
 
     @Override
     public int getCountAll() {
-        return 0;  //To change body of implemented methods use File | Settings 
| File Templates.
+        return (int)template.count(new Query(), COLLECTION);
     }
 
     @Override
     public List<User> findByUsernameOrEmail(String searchTerm, int offset, int 
pageSize) {
-        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+        return 
hydrate(template.find(getSearchQuery(searchTerm).skip(offset).limit(pageSize), 
CLAZZ, COLLECTION));
     }
 
     @Override
     public int getCountByUsernameOrEmail(String searchTerm) {
-        return 0;  //To change body of implemented methods use File | Settings 
| File Templates.
+        return (int)template.count(getSearchQuery(searchTerm), COLLECTION);
     }
 
     @Override
     public List<User> getAllByAddedWidget(long widgetId) {
-        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+        return null;
     }
 
     @Override
     public User getByForgotPasswordHash(String hash) {
-        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+        return 
hydrate(template.findOne(query(where("forgotPasswordHash").is(hash)), CLAZZ, 
COLLECTION));
     }
 
     @Override
     public Class<? extends User> getType() {
-        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+        return MongoDbUser.class;
     }
 
     @Override
     public User get(long id) {
-        return template.findById(id, MongoDbUser.class);
+        return hydrate(template.findById(id, CLAZZ, COLLECTION));
     }
 
     @Override
     public User save(User item) {
-        template.save(item, "mongoDbUser");
-        return item;
+        MongoDbUser converted = converter.convert(item, User.class);
+        template.save(converted, COLLECTION);
+        return hydrate(converted);
     }
 
     @Override
     public void delete(User item) {
-        //To change body of implemented methods use File | Settings | File 
Templates.
+        template.remove(get(item.getId()), COLLECTION);
+    }
+
+    private User hydrate(MongoDbUser user) {
+        converter.hydrate(user, User.class);
+        return user;
+    }
+
+    private List<User> hydrate(List<MongoDbUser> userList) {
+        for(MongoDbUser user : userList) {
+            converter.hydrate(user, User.class);
+        }
+        return CollectionUtils.<User>toBaseTypedList(userList);
+    }
+
+    private Query query(Criteria criteria) {
+        return new Query(criteria);
+    }
+
+    private Query getSearchQuery(String searchTerm) {
+        return 
query(where("username").is(searchTerm).orOperator(where("email").is(searchTerm)));
     }
 }


Reply via email to