/** * myJerry | Evenstar * Copyright (C) 2010 myJerry Development Team * http://www.myjerry.org * * The file is licensed under the 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.myjerry.evenstar.service.impl; import java.util.Collection; import java.util.List; import javax.jdo.JDOObjectNotFoundException; import javax.jdo.PersistenceManager; import javax.jdo.Query; import org.myjerry.evenstar.model.BlogAuthor; import org.myjerry.evenstar.model.BlogReader; import org.myjerry.evenstar.model.EvenstarUser; import org.myjerry.evenstar.persistence.PersistenceManagerFactoryImpl; import org.myjerry.evenstar.service.BlogUserService; import org.myjerry.evenstar.service.UserService; import org.myjerry.util.GAEUserUtil; import org.myjerry.util.ServerUtils; import org.springframework.beans.factory.annotation.Autowired; public class BlogUserServiceImpl implements BlogUserService { @Autowired private UserService userService; @Override public boolean isPostAllowedForUser(Long userID, Long postID, Long blogID) { // TODO Auto-generated method stub return false; } @Override public boolean isUserBlogAdmin(Long userID, Long blogID) { // TODO Auto-generated method stub return false; } @Override public boolean isUserBlogReader(Long userID, Long blogID) { if(userID == null || blogID == null) { return false; } EvenstarUser user = this.userService.getEvenstarUser(userID); if(user != null) { return existsBlogReader(user.getEmail(), blogID); } return false; } @Override public boolean addBlogAuthor(String emailAddress, Long blogID) { if(!existsBlogAuthor(emailAddress, blogID)) { BlogAuthor author = new BlogAuthor(); author.setBlogID(blogID); author.setEmailAddress(emailAddress); author.setLastUpdatedOn(ServerUtils.getServerDate()); author.setLastUpdatedBy(GAEUserUtil.getUserID()); PersistenceManager manager = PersistenceManagerFactoryImpl.getPersistenceManager(); try { manager.makePersistent(author); return true; } catch(Exception e) { e.printStackTrace(); return false; } finally { manager.close(); } } return false; } @Override public boolean addBlogReader(String emailAddress, Long blogID) { if(!existsBlogReader(emailAddress, blogID)) { BlogReader reader = new BlogReader(); reader.setBlogID(blogID); reader.setEmailAddress(emailAddress); reader.setLastUpdatedOn(ServerUtils.getServerDate()); reader.setLastUpdatedBy(GAEUserUtil.getUserID()); PersistenceManager manager = PersistenceManagerFactoryImpl.getPersistenceManager(); try { manager.makePersistent(reader); return true; } catch(Exception e) { e.printStackTrace(); return false; } finally { manager.close(); } } return false; } @SuppressWarnings("unchecked") @Override public boolean deleteBlogAuthor(String emailAddress, Long blogID) { PersistenceManager manager = PersistenceManagerFactoryImpl.getPersistenceManager(); Query query = manager.newQuery(BlogAuthor.class); query.setFilter("emailAddress == emailAddressParam && blogID == blogIDParam"); query.declareParameters("String emailAddressParam, String blogIDParam"); try { List<BlogAuthor> authors = (List<BlogAuthor>) query.execute(emailAddress, blogID); if(authors != null && authors.size() > 0) { for(BlogAuthor author : authors) { manager.deletePersistent(author); } } return true; } catch(JDOObjectNotFoundException e) { // do nothing } catch(Exception e) { e.printStackTrace(); } finally { query.closeAll(); manager.close(); } return false; } @SuppressWarnings("unchecked") @Override public boolean deleteBlogReader(String emailAddress, Long blogID) { PersistenceManager manager = PersistenceManagerFactoryImpl.getPersistenceManager(); Query query = manager.newQuery(BlogReader.class); query.setFilter("emailAddress == emailAddressParam && blogID == blogIDParam"); query.declareParameters("String emailAddressParam, String blogIDParam"); try { List<BlogReader> readers = (List<BlogReader>) query.execute(emailAddress, blogID); if(readers != null && readers.size() > 0) { for(BlogReader reader : readers) { manager.deletePersistent(reader); } } return true; } catch(JDOObjectNotFoundException e) { // do nothing } catch(Exception e) { e.printStackTrace(); } finally { query.closeAll(); manager.close(); } return false; } @SuppressWarnings("unchecked") @Override public boolean existsBlogAuthor(String emailAddress, Long blogID) { PersistenceManager manager = PersistenceManagerFactoryImpl.getPersistenceManager(); Query query = manager.newQuery(BlogAuthor.class); query.setFilter("emailAddress == emailAddressParam && blogID == blogIDParam"); query.declareParameters("String emailAddressParam, String blogIDParam"); try { List<BlogAuthor> authors = (List<BlogAuthor>) query.execute(emailAddress, blogID); if(authors != null && authors.size() == 1) { return true; } } catch(JDOObjectNotFoundException e) { // do nothing } catch(Exception e) { e.printStackTrace(); } finally { query.closeAll(); manager.close(); } return false; } @SuppressWarnings("unchecked") @Override public boolean existsBlogReader(String emailAddress, Long blogID) { PersistenceManager manager = PersistenceManagerFactoryImpl.getPersistenceManager(); Query query = manager.newQuery(BlogReader.class); query.setFilter("emailAddress == emailAddressParam && blogID == blogIDParam"); query.declareParameters("String emailAddressParam, String blogIDParam"); try { List<BlogReader> readers = (List<BlogReader>) query.execute(emailAddress, blogID); if(readers != null && readers.size() == 1) { return true; } } catch(JDOObjectNotFoundException e) { // do nothing } catch(Exception e) { e.printStackTrace(); } finally { query.closeAll(); manager.close(); } return false; } @SuppressWarnings("unchecked") @Override public Collection<BlogAuthor> getBlogAuthors(Long blogID) { PersistenceManager manager = PersistenceManagerFactoryImpl.getPersistenceManager(); Query query = manager.newQuery(BlogAuthor.class); query.setFilter("blogID == blogIDParam"); query.declareParameters("String blogIDParam"); try { List<BlogAuthor> authors = (List<BlogAuthor>) query.execute(blogID); if(authors != null && authors.size() > 0) { return manager.detachCopyAll(authors); } } catch(JDOObjectNotFoundException e) { // do nothing } catch(Exception e) { e.printStackTrace(); } finally { query.closeAll(); manager.close(); } return null; } @SuppressWarnings("unchecked") @Override public Collection<BlogReader> getBlogReaders(Long blogID) { PersistenceManager manager = PersistenceManagerFactoryImpl.getPersistenceManager(); Query query = manager.newQuery(BlogReader.class); query.setFilter("blogID == blogIDParam"); query.declareParameters("String blogIDParam"); try { List<BlogReader> readers = (List<BlogReader>) query.execute(blogID); if(readers != null && readers.size() > 0) { return manager.detachCopyAll(readers); } } catch(JDOObjectNotFoundException e) { // do nothing } catch(Exception e) { e.printStackTrace(); } finally { query.closeAll(); manager.close(); } return null; } /** * @return the userService */ public UserService getUserService() { return userService; } /** * @param userService the userService to set */ public void setUserService(UserService userService) { this.userService = userService; } }