// Path: src/main/java/com/codefork/refine/resources/NameType.java
// public class NameType {
// 
//     private String id;
//     private String name;
// 
//     public NameType(String id, String name) {
//         this.id = id;
//         this.name = name;
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if(obj instanceof NameType) {
//             NameType obj2 = (NameType) obj;
//             return obj2.getId().equals(getId())
//                     && obj2.getName().equals(getName());
//         }
//         return false;
//     }
// }
// 
// Path: src/main/java/com/codefork/refine/resources/ServiceMetaDataResponse.java
// @JsonInclude(JsonInclude.Include.NON_NULL)
// public abstract class ServiceMetaDataResponse {
// 
//     private String name;
//     private String identifierSpace;
//     private String schemaSpace;
//     private View view;
//     private List<NameType> defaultTypes;
//     private Preview preview;
//     private Extend extend;
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getIdentifierSpace() {
//         return identifierSpace;
//     }
// 
//     public void setIdentifierSpace(String identifierSpace) {
//         this.identifierSpace = identifierSpace;
//     }
// 
//     public String getSchemaSpace() {
//         return schemaSpace;
//     }
// 
//     public void setSchemaSpace(String schemaSpace) {
//         this.schemaSpace = schemaSpace;
//     }
// 
//     public View getView() {
//         return view;
//     }
// 
//     public void setView(View view) {
//         this.view = view;
//     }
// 
//     public List<NameType> getDefaultTypes() {
//         return defaultTypes;
//     }
// 
//     public void setDefaultTypes(List<NameType> defaultTypes) {
//         this.defaultTypes = defaultTypes;
//     }
// 
//     public Preview getPreview() {
//         return preview;
//     }
// 
//     public void setPreview(Preview preview) {
//         this.preview = preview;
//     }
// 
//     public Extend getExtend() {
//         return extend;
//     }
// 
//     public void setExtend(Extend extend) {
//         this.extend = extend;
//     }
// 
// }
// 
// Path: src/main/java/com/codefork/refine/resources/View.java
// public class View {
//     private String url;
// 
//     public View(String url) {
//         this.url = url;
//     }
// 
//     public String getUrl() {
//         return url;
//     }
// 
//     public void setUrl(String url) {
//         this.url = url;
//     }
// 
// }


import com.codefork.refine.resources.NameType;
import com.codefork.refine.resources.ServiceMetaDataResponse;
import com.codefork.refine.resources.View;
import com.fasterxml.jackson.annotation.JsonInclude;
import java.util.ArrayList;
import java.util.List;
package com.codefork.refine.openlibrary;



@JsonInclude(JsonInclude.Include.NON_NULL)
public class OpenLibraryMetaDataResponse extends ServiceMetaDataResponse {

    private final static String IDENTIFIER_SPACE = "http://rdf.freebase.com/ns/user/hangy/viaf";
    private final static View VIEW = new View("https://openlibrary.org{{id}}");
    private final static String SCHEMA_SPACE = "http://rdf.freebase.com/ns/type.object.id";
    private final static List<NameType> DEFAULT_TYPES = new ArrayList<>();

    static {
        DEFAULT_TYPES.add(new NameType("/book/book", "Book"));
    }

    public OpenLibraryMetaDataResponse(String baseServiceName) {
        setName(baseServiceName);
        setIdentifierSpace(IDENTIFIER_SPACE);
        setSchemaSpace(SCHEMA_SPACE);
// Path: src/main/java/com/codefork/refine/resources/NameType.java
// public class NameType {
// 
//     private String id;
//     private String name;
// 
//     public NameType(String id, String name) {
//         this.id = id;
//         this.name = name;
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if(obj instanceof NameType) {
//             NameType obj2 = (NameType) obj;
//             return obj2.getId().equals(getId())
//                     && obj2.getName().equals(getName());
//         }
//         return false;
//     }
// }
// 
// Path: src/main/java/com/codefork/refine/resources/ServiceMetaDataResponse.java
// @JsonInclude(JsonInclude.Include.NON_NULL)
// public abstract class ServiceMetaDataResponse {
// 
//     private String name;
//     private String identifierSpace;
//     private String schemaSpace;
//     private View view;
//     private List<NameType> defaultTypes;
//     private Preview preview;
//     private Extend extend;
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getIdentifierSpace() {
//         return identifierSpace;
//     }
// 
//     public void setIdentifierSpace(String identifierSpace) {
//         this.identifierSpace = identifierSpace;
//     }
// 
//     public String getSchemaSpace() {
//         return schemaSpace;
//     }
// 
//     public void setSchemaSpace(String schemaSpace) {
//         this.schemaSpace = schemaSpace;
//     }
// 
//     public View getView() {
//         return view;
//     }
// 
//     public void setView(View view) {
//         this.view = view;
//     }
// 
//     public List<NameType> getDefaultTypes() {
//         return defaultTypes;
//     }
// 
//     public void setDefaultTypes(List<NameType> defaultTypes) {
//         this.defaultTypes = defaultTypes;
//     }
// 
//     public Preview getPreview() {
//         return preview;
//     }
// 
//     public void setPreview(Preview preview) {
//         this.preview = preview;
//     }
// 
//     public Extend getExtend() {
//         return extend;
//     }
// 
//     public void setExtend(Extend extend) {
//         this.extend = extend;
//     }
// 
// }
// 
// Path: src/main/java/com/codefork/refine/resources/View.java
// public class View {
//     private String url;
// 
//     public View(String url) {
//         this.url = url;
//     }
// 
//     public String getUrl() {
//         return url;
//     }
// 
//     public void setUrl(String url) {
//         this.url = url;
//     }
// 
// }


// Path: src/main/java/com/codefork/refine/openlibrary/OpenLibraryMetaDataResponse.java
import com.codefork.refine.resources.NameType;
import com.codefork.refine.resources.ServiceMetaDataResponse;
import com.codefork.refine.resources.View;
import com.fasterxml.jackson.annotation.JsonInclude;
import java.util.ArrayList;
import java.util.List;

package com.codefork.refine.openlibrary;



@JsonInclude(JsonInclude.Include.NON_NULL)
public class OpenLibraryMetaDataResponse extends ServiceMetaDataResponse {

    private final static String IDENTIFIER_SPACE = "http://rdf.freebase.com/ns/user/hangy/viaf";
    private final static View VIEW = new View("https://openlibrary.org{{id}}");
    private final static String SCHEMA_SPACE = "http://rdf.freebase.com/ns/type.object.id";
    private final static List<NameType> DEFAULT_TYPES = new ArrayList<>();

    static {
        DEFAULT_TYPES.add(new NameType("/book/book", "Book"));
    }

    public OpenLibraryMetaDataResponse(String baseServiceName) {
        setName(baseServiceName);
        setIdentifierSpace(IDENTIFIER_SPACE);
        setSchemaSpace(SCHEMA_SPACE);
        setView(VIEW);