Package org.springframework.integration.samples.loanbroker.loanshark.domain

Source Code of org.springframework.integration.samples.loanbroker.loanshark.domain.LoanShark

/*
* Copyright 2002-2012 the original author or authors.
*
* 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.
*/
package org.springframework.integration.samples.loanbroker.loanshark.domain;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.persistence.Version;

import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.transaction.annotation.Transactional;

import flexjson.JSONDeserializer;
import flexjson.JSONSerializer;

@Configurable
@Entity
public class LoanShark {

  private String name;

  private Long counter;

  private Double averageRate;

  public String toJson() {
    return new JSONSerializer().exclude("*.class").serialize(this);
  }

  public static LoanShark fromJsonToLoanShark(String json) {
    return new JSONDeserializer<LoanShark>().use(null, LoanShark.class).deserialize(json);
  }

  public static String toJsonArray(Collection<LoanShark> collection) {
    return new JSONSerializer().exclude("*.class").serialize(collection);
  }

  public static Collection<LoanShark> fromJsonArrayToLoanSharks(String json) {
    return new JSONDeserializer<List<LoanShark>>().use(null, ArrayList.class).use("values", LoanShark.class).deserialize(json);
  }

  @PersistenceContext
  transient EntityManager entityManager;

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  @Column(name = "id")
  private Long id;

  @Version
  @Column(name = "version")
  private Integer version;

  public Long getId() {
    return this.id;
  }

  public void setId(Long id) {
    this.id = id;
  }

  public Integer getVersion() {
    return this.version;
  }

  public void setVersion(Integer version) {
    this.version = version;
  }

  @Transactional
  public void persist() {
    if (this.entityManager == null) {
      this.entityManager = entityManager();
    }
    this.entityManager.persist(this);
  }

  @Transactional
  public void remove() {
    if (this.entityManager == null) {
      this.entityManager = entityManager();
    }
    if (this.entityManager.contains(this)) {
      this.entityManager.remove(this);
    } else {
      LoanShark attached = this.entityManager.find(this.getClass(), this.id);
      this.entityManager.remove(attached);
    }
  }

  @Transactional
  public void flush() {
    if (this.entityManager == null) {
      this.entityManager = entityManager();
    }
    this.entityManager.flush();
  }

  @Transactional
  public LoanShark merge() {
    if (this.entityManager == null) {
      this.entityManager = entityManager();
    }
    LoanShark merged = this.entityManager.merge(this);
    this.entityManager.flush();
    return merged;
  }

  public static final EntityManager entityManager() {
    EntityManager em = new LoanShark().entityManager;
    if (em == null) {
      throw new IllegalStateException("Entity manager has not been injected (is the Spring Aspects JAR configured as an AJC/AJDT aspects library?)");
    }
    return em;
  }

  public static long countLoanSharks() {
    return ((Number) entityManager().createQuery("select count(o) from LoanShark o").getSingleResult()).longValue();
  }

  @SuppressWarnings("unchecked")
  public static List<LoanShark> findAllLoanSharks() {
    return entityManager().createQuery("select o from LoanShark o").getResultList();
  }

  public static LoanShark findLoanShark(Long id) {
    if (id == null) return null;
    return entityManager().find(LoanShark.class, id);
  }

  @SuppressWarnings("unchecked")
  public static List<LoanShark> findLoanSharkEntries(int firstResult, int maxResults) {
    return entityManager().createQuery("select o from LoanShark o").setFirstResult(firstResult).setMaxResults(maxResults).getResultList();
  }

  public String getName() {
    return this.name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public Long getCounter() {
    return this.counter;
  }

  public void setCounter(Long counter) {
    this.counter = counter;
  }

  public Double getAverageRate() {
    return this.averageRate;
  }

  public void setAverageRate(Double averageRate) {
    this.averageRate = averageRate;
  }

  public static Query findLoanSharksByName(String name) {
    if (name == null || name.length() == 0) {
      throw new IllegalArgumentException("The name argument is required");
    }
    EntityManager em = LoanShark.entityManager();
    Query q = em.createQuery("SELECT LoanShark FROM LoanShark AS loanshark WHERE loanshark.name = :name");
    q.setParameter("name", name);
    return q;
  }

  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("Id: ").append(getId()).append(", ");
    sb.append("Version: ").append(getVersion()).append(", ");
    sb.append("Name: ").append(getName()).append(", ");
    sb.append("Counter: ").append(getCounter()).append(", ");
    sb.append("AverageRate: ").append(getAverageRate());
    return sb.toString();
  }
}
TOP

Related Classes of org.springframework.integration.samples.loanbroker.loanshark.domain.LoanShark

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.