Package com.metadot.book.connectr.server.domain

Source Code of com.metadot.book.connectr.server.domain.Friend

/**
* Copyright 2010 Daniel Guermeur and Amy Unruh
*
*   Licensed 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.
*
*   See http://connectrapp.appspot.com/ for a demo, and links to more information
*   about this app and the book that it accompanies.
*/
package com.metadot.book.connectr.server.domain;

import java.io.Serializable;
import java.util.Set;

import javax.jdo.PersistenceManager;
import javax.jdo.annotations.Extension;
import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
import javax.jdo.listener.StoreCallback;

import com.metadot.book.connectr.server.utils.cache.CacheSupport;
import com.metadot.book.connectr.server.utils.cache.Cacheable;
import com.metadot.book.connectr.shared.FriendDTO;
import com.metadot.book.connectr.shared.FriendSummaryDTO;


/**
* The Friend persistence-capable class stores information about a user's (UserAccount's) friends.
* The UserAccount:Friend relationship is one-to-many, managed as a bi-directional
* JDO owned relationship.
* Each Friend has a FriendDetails child, also managed as a JDO owned relationship.
*/
@SuppressWarnings("serial")
@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable = "true")
public class Friend implements StoreCallback, Serializable, Cacheable {
 
  private static final int CACHE_EXPIR = 600// in seconds

  @PrimaryKey
  @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
  @Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value = "true")
  private String id;

  @Persistent(dependent = "true")
  private FriendDetails details;

  @Persistent
  private String firstName;
  @Persistent
  private String lastName;
  @Persistent
  private String lcFirstName;
  @Persistent
  private String lcLastName;

  // pointer back to userinfo object with which this friend is associated
  @Persistent
  private UserAccount userPrefs;


  public Friend() {
    details = new FriendDetails();
  }

  public Friend(FriendDTO friendDTO) {
    this();
    this.setBasicInfo(friendDTO.getFirstName(), friendDTO.getLastName(),
        friendDTO.getEmailAddress());
    this.setUrls(friendDTO.getUrls());
  }
 
 
  public void setBasicInfo(String firstName, String lastName,
      String emailAddress) {

    this.firstName = firstName;
    this.lastName = lastName;
    this.setEmailAddress(emailAddress);
  }

  public FriendSummaryDTO toLightWeightDTO() {
    return new FriendSummaryDTO(id, getFullName());
  }

  public FriendDTO toDTO() {
    FriendDTO friendDTO = new FriendDTO(this.getFirstName(),
      this.getLastName(), this.getEmailAddress());
    friendDTO.setId(this.getId());
    friendDTO.setUrls(this.getUrls());

    return friendDTO;
  }
   
  public static void removeBadURLs(Set<String> badurls, String id, PersistenceManager pm) {
    Friend f = pm.getObjectById(Friend.class, id);
    Set<String> urls = f.getUrls();
    urls.removeAll(badurls);
  }

  /**
   * update existing friend object based on friend DTO id
   *
   * @param friendDTO
   */
  public void updateFromDTO(FriendDTO friendDTO) {
    this.firstName = friendDTO.getFirstName();
    this.lastName = friendDTO.getLastName();
    this.setEmailAddress(friendDTO.getEmailAddress());
    details.setUrls(friendDTO.getUrls());
  }

  public String getId() {
    return id;
  }

 
  public FriendDetails getDetails() {
    return details;
  }

  public String getFirstName() {
    return firstName;
  }

  public void setFirstName(String firstName) {
    this.firstName = firstName;
  }

  public String getLastName() {
    return lastName;
  }

  public void setLastName(String lastName) {
    this.lastName = lastName;
  }

  public String getFullName() {
    return firstName + " " + lastName;
  }

  public String getLcFirstName() {
    return lcFirstName;
  }

  public String getLcLastName() {
    return lcLastName;
  }

  public String getEmailAddress() {
    return details.getEmailAddress();
  }

  public void setEmailAddress(String emailAddress) {
    details.setEmailAddress(emailAddress);
  }

  public void jdoPreStore() {
    if (getLastName() != null) {
      lcLastName = getLastName().toLowerCase();
    } else {
      lcLastName = null;
    }
    if (getFirstName() != null) {
      lcFirstName = getFirstName().toLowerCase();
    } else {
      lcFirstName = null;
    }
  }
 
  public void removeFromCache() {
    CacheSupport.cacheDelete(this.getClass().getName(), id);
  }

 
  public void addToCache() {
    getDetails(); // force load of lazily-loaded field
    CacheSupport.cachePutExp(this.getClass().getName(), id, this, CACHE_EXPIR);
  }

 
  public Set<String> getUrls() {
    return details.getUrls();
  }
 
  public void setUrls(Set<String> urls) {
    details.setUrls(urls);
  }
 
  public void addUrl(String url) {
    details.addUrl(url);
  }

  public void addUrls(Set<String> urls) {
    details.addUrls(urls);
  }
 
  public UserAccount getUser() {
    return userPrefs;
  }
 
} // end class
TOP

Related Classes of com.metadot.book.connectr.server.domain.Friend

TOP
Copyright © 2018 www.massapi.com. 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.