Package com.iggroup.oss.sample.eai.dao

Source Code of com.iggroup.oss.sample.eai.dao.SampleDAO

/*
* #%L
* restdoc-sample
* %%
* Copyright (C) 2012 IG Group
* %%
* 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.
* #L%
*/
package com.iggroup.oss.sample.eai.dao;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import org.springframework.stereotype.Component;

import com.iggroup.oss.sample.domain.Sample;
import com.iggroup.oss.sample.domain.SampleType;
import com.iggroup.oss.sample.domain.exception.DuplicateReferenceException;
import com.iggroup.oss.sample.domain.exception.ReferenceNotFoundException;

/**
* Sample data access object that provides access to a very dull, static
* in-memory map of Sample objects.
*/
@Component("sampleDAO")
public class SampleDAO {

   /**
    * The "database"
    */
   private final HashMap<String, Sample> database =
      new HashMap<String, Sample>();

   private HashMap<String, Sample> getDatabase() {
      return database;
   }

   /**
    * Default constructor. Sets up the "database"
    */
   public SampleDAO() {

      getDatabase().put("00001",
         new Sample("00001", "Wuthering Heights", SampleType.BOOK));
      getDatabase().put("00002",
         new Sample("00002", "Silas Marner", SampleType.BOOK));
      getDatabase().put("00003",
         new Sample("00003", "The Life of Pi", SampleType.BOOK));
      getDatabase().put("00004",
         new Sample("00004", "Gladiator", SampleType.DVD));
      getDatabase().put("00005",
         new Sample("00005", "Oliver Twist", SampleType.BOOK));

   }

   /**
    * Loads a sample object by reference
    *
    * @param reference the unique reference for a sample object
    * @return sample if found, else throws a NotFoundException
    */
   public Sample loadSample(String reference) {

      Sample sample = database.get(reference);

      if (sample == null) {
         throw new ReferenceNotFoundException(reference);
      }
      return sample;

   }

   /**
    * Return a list of samples with names containing the requested name
    * fragment, or an empty list if no matches were found
    *
    * @param nameFragment the name fragment to match against
    * @return a list of samples, or an empty list if no matches
    */
   public List<Sample> findSamples(String nameFragment) {

      List<Sample> results = new ArrayList<Sample>();

      for (Sample sample : database.values()) {
         if (sample.getName().contains(nameFragment)) {
            results.add(sample);
         }
      }
      return results;
   }

   /**
    * Return all samples of the given type
    *
    * @param type the sample type filter for this query
    * @return all samples of the given type
    */
   public List<Sample> findSamples(SampleType type) {

      List<Sample> results = new ArrayList<Sample>();

      for (Sample sample : database.values()) {
         if (sample.getType() == type) {
            results.add(sample);
         }
      }
      return results;

   }

   /**
    * Return all samples
    *
    * @return all samples
    */
   public List<Sample> findSamples() {

      List<Sample> results = new ArrayList<Sample>();

      for (Sample sample : database.values()) {
         results.add(sample);
      }
      return results;
   }

   /**
    * Create a sample, throwing a duplicate key exception if a sample of the
    * given reference already exists
    *
    * @param sample the sample to be created
    */
   public void createSample(Sample sample) {
      if (database.containsKey(sample.getReference())) {
         throw new DuplicateReferenceException(sample.getReference());
      }
      database.put(sample.getReference(), sample);
   }

   /**
    * Delete a sample, throwing a not found exception if the reference is not
    * found
    *
    * @param reference the reference of the sample to be deleted
    */
   public void deleteSample(String reference) {
      if (!database.containsKey(reference)) {
         throw new ReferenceNotFoundException(reference);
      }
      database.remove(reference);
   }

   /**
    * Update a sample
    *
    * @param sample the updated sample
    */
   public void updateSample(Sample sample) {
      if (!database.containsKey(sample.getReference())) {
         throw new ReferenceNotFoundException(sample.getReference());
      }
      database.put(sample.getReference(), sample);
   }
}
TOP

Related Classes of com.iggroup.oss.sample.eai.dao.SampleDAO

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.