/*
* Copyright (C) 2011 Ahmed Yehia (ahmed.yehia.m@gmail.com)
*
* 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.lightcouch;
import java.util.Map;
import com.google.gson.annotations.SerializedName;
/**
* Represents a design document.
* @see CouchDbDesign
* @author Ahmed Yehia
*/
public class DesignDocument extends Document {
private String language;
private Map<String, MapReduce> views;
@SerializedName("validate_doc_update")
private String validateDocUpdate;
private Map<String, String> filters;
private Map<String, String> shows;
private Map<String, String> lists;
public String getLanguage() {
return language;
}
public Map<String, MapReduce> getViews() {
return views;
}
public String getValidateDocUpdate() {
return validateDocUpdate;
}
public Map<String, String> getFilters() {
return filters;
}
public Map<String, String> getShows() {
return shows;
}
public Map<String, String> getLists() {
return lists;
}
public void setLanguage(String language) {
this.language = language;
}
public void setViews(Map<String, MapReduce> views) {
this.views = views;
}
public void setValidateDocUpdate(String validateDocUpdate) {
this.validateDocUpdate = validateDocUpdate;
}
public void setFilters(Map<String, String> filters) {
this.filters = filters;
}
public void setShows(Map<String, String> shows) {
this.shows = shows;
}
public void setLists(Map<String, String> lists) {
this.lists = lists;
}
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + ((filters == null) ? 0 : filters.hashCode());
result = prime * result + ((language == null) ? 0 : language.hashCode());
result = prime * result + ((lists == null) ? 0 : lists.hashCode());
result = prime * result + ((shows == null) ? 0 : shows.hashCode());
result = prime * result
+ ((validateDocUpdate == null) ? 0 : validateDocUpdate.hashCode());
result = prime * result + ((views == null) ? 0 : views.hashCode());
return result;
}
/**
* Indicates whether some other design document is equals to this one.
*/
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!super.equals(obj))
return false;
if (getClass() != obj.getClass())
return false;
DesignDocument other = (DesignDocument) obj;
if (filters == null) {
if (other.filters != null)
return false;
} else if (!filters.equals(other.filters))
return false;
if (language == null) {
if (other.language != null)
return false;
} else if (!language.equals(other.language))
return false;
if (lists == null) {
if (other.lists != null)
return false;
} else if (!lists.equals(other.lists))
return false;
if (shows == null) {
if (other.shows != null)
return false;
} else if (!shows.equals(other.shows))
return false;
if (validateDocUpdate == null) {
if (other.validateDocUpdate != null)
return false;
} else if (!validateDocUpdate.equals(other.validateDocUpdate))
return false;
if (views == null) {
if (other.views != null)
return false;
} else if (!views.equals(other.views))
return false;
return true;
}
/**
* Holds Map Reduce functions in a view.
* @author Ahmed Yehia
*/
public class MapReduce {
private String map;
private String reduce;
public String getMap() {
return map;
}
public String getReduce() {
return reduce;
}
public void setMap(String map) {
this.map = map;
}
public void setReduce(String reduce) {
this.reduce = reduce;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((map == null) ? 0 : map.hashCode());
result = prime * result + ((reduce == null) ? 0 : reduce.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
MapReduce other = (MapReduce) obj;
if (map == null) {
if (other.map != null)
return false;
} else if (!map.equals(other.map))
return false;
if (reduce == null) {
if (other.reduce != null)
return false;
} else if (!reduce.equals(other.reduce))
return false;
return true;
}
} // /class MapReduce
}