/**
* Copyright 2014 Reverb Technologies, Inc.
* <p>
* 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
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* 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 com.wordnik.sample.data;
import com.wordnik.sample.model.Category;
import com.wordnik.sample.model.Pet;
import com.wordnik.sample.model.PetId;
import com.wordnik.sample.model.PetName;
import com.wordnik.sample.model.Tag;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class PetData {
static List<Pet> pets = new ArrayList<Pet>();
static List<Category> categories = new ArrayList<Category>();
static {
categories.add(createCategory(1, "Dogs"));
categories.add(createCategory(2, "Cats"));
categories.add(createCategory(3, "Rabbits"));
categories.add(createCategory(4, "Lions"));
pets.add(createPet(1, categories.get(1), "Cat 1", new String[]{
"url1", "url2"}, new String[]{"tag1", "tag2"}, "available"));
pets.add(createPet(2, categories.get(1), "Cat 2", new String[]{
"url1", "url2"}, new String[]{"tag2", "tag3"}, "available"));
pets.add(createPet(3, categories.get(1), "Cat 3", new String[]{
"url1", "url2"}, new String[]{"tag3", "tag4"}, "pending"));
pets.add(createPet(4, categories.get(0), "Dog 1", new String[]{
"url1", "url2"}, new String[]{"tag1", "tag2"}, "available"));
pets.add(createPet(5, categories.get(0), "Dog 2", new String[]{
"url1", "url2"}, new String[]{"tag2", "tag3"}, "sold"));
pets.add(createPet(6, categories.get(0), "Dog 3", new String[]{
"url1", "url2"}, new String[]{"tag3", "tag4"}, "pending"));
pets.add(createPet(7, categories.get(3), "Lion 1", new String[]{
"url1", "url2"}, new String[]{"tag1", "tag2"}, "available"));
pets.add(createPet(8, categories.get(3), "Lion 2", new String[]{
"url1", "url2"}, new String[]{"tag2", "tag3"}, "available"));
pets.add(createPet(9, categories.get(3), "Lion 3", new String[]{
"url1", "url2"}, new String[]{"tag3", "tag4"}, "available"));
pets.add(createPet(10, categories.get(2), "Rabbit 1", new String[]{
"url1", "url2"}, new String[]{"tag3", "tag4"}, "available"));
}
public Pet getPetbyId(long petId) {
for (Pet pet : pets) {
if (pet.getId().value() == petId) {
return pet;
}
}
return null;
}
public void deletePet(long petId) {
if (!pets.isEmpty()) {
for (int i = pets.size(); i >= 0; i++) {
Pet pet = pets.get(i);
if (pet.getId().value() == petId) {
pets.remove(i);
}
}
}
}
public List<Pet> findPetByStatus(String status) {
String[] statues = status.split(",");
List<Pet> result = new ArrayList<Pet>();
for (Pet pet : pets) {
for (String s : statues) {
if (s.equals(pet.getStatus())) {
result.add(pet);
}
}
}
return result;
}
public List<Pet> findPetByTags(String tags) {
String[] tagList = tags.split(",");
List<Pet> result = new ArrayList<Pet>();
for (Pet pet : pets) {
if (pet.getTags() != null) {
for (Tag tag : pet.getTags()) {
for (String tagListString : tagList) {
if (tagListString.equals(tag.getName())) {
result.add(pet);
}
}
}
}
}
return result;
}
public Pet addPet(Pet pet) {
if (pet.getId().value() == 0) {
long maxId = 0;
for (int i = pets.size() - 1; i >= 0; i--) {
if (pets.get(i).getId().value() > maxId) {
maxId = pets.get(i).getId().value();
}
}
pet.setId(new PetId(maxId + 1));
}
if (!pets.isEmpty()) {
for (int i = pets.size() - 1; i >= 0; i--) {
if (pets.get(i).getId().value() == pet.getId().value()) {
pets.remove(i);
}
}
}
pets.add(pet);
return pet;
}
static Pet createPet(long id, Category cat, String name, String[] urls,
String[] tags, String status) {
Pet pet = new Pet();
pet.setId(new PetId(id));
pet.setCategory(cat);
pet.setName(new PetName(name));
if (urls != null) {
List<String> urlObjs = new ArrayList<String>();
Collections.addAll(urlObjs, urls);
pet.setPhotoUrls(urlObjs);
}
List<Tag> tagObjs = new ArrayList<Tag>();
int i = 0;
if (tags != null) {
for (String tagString : tags) {
i = i + 1;
Tag tag = new Tag();
tag.setId(i);
tag.setName(tagString);
tagObjs.add(tag);
}
}
pet.setTags(tagObjs);
pet.setStatus(status);
return pet;
}
static Category createCategory(long id, String name) {
Category category = new Category();
category.setId(id);
category.setName(name);
return category;
}
}