All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.vvakame.util.jsonpullparser.builder.JsonModelBuilder Maven / Gradle / Ivy

The newest version!
package net.vvakame.util.jsonpullparser.builder;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * JSON model builder.
 * @author vvakame
 * @param 
 */
public abstract class JsonModelBuilder {

	protected Class baseClass;

	protected boolean treatUnknownKeyAsError;

	protected Map> map =
			new LinkedHashMap>();


	/**
	 * the constructor.
	 * @param baseClass 
	 * @param treatUnknownKeyAsError
	 * @category constructor
	 */
	public JsonModelBuilder(Class baseClass, boolean treatUnknownKeyAsError) {
		this.baseClass = baseClass;
		this.treatUnknownKeyAsError = treatUnknownKeyAsError;
	}

	/**
	 * Attaches property builder for the all types.
	 * @return this
	 * @author vvakame
	 */
	public abstract JsonModelBuilder addAll();

	/**
	 * Attaches property builder for the given types.
	 * @param creators
	 * @return this
	 * @author vvakame
	 */
	public 

JsonModelBuilder add(JsonPropertyBuilderCreator... creators) { for (JsonPropertyBuilderCreator creator : creators) { addSub(creator.

get()); } return this; } /** * Attaches property builder for the given types. * @param creator * @return this * @author vvakame */ public

JsonModelBuilder add(JsonPropertyBuilderCreator creator) { addSub(creator.

get()); return this; } /** * Attaches property builder for the given types. * @param creator1 * @param creator2 * @return this * @author vvakame */ public

JsonModelBuilder add(JsonPropertyBuilderCreator creator1, JsonPropertyBuilderCreator creator2) { addSub(creator1.

get()); addSub(creator2.

get()); return this; } /** * Attaches property builder for the given types. * @param creator1 * @param creator2 * @param creator3 * @return this * @author vvakame */ public

JsonModelBuilder add(JsonPropertyBuilderCreator creator1, JsonPropertyBuilderCreator creator2, JsonPropertyBuilderCreator creator3) { addSub(creator1.

get()); addSub(creator2.

get()); addSub(creator3.

get()); return this; } /** * Attaches property builder for the given types. * @param creator1 * @param creator2 * @param creator3 * @param creator4 * @return this * @author vvakame */ public

JsonModelBuilder add(JsonPropertyBuilderCreator creator1, JsonPropertyBuilderCreator creator2, JsonPropertyBuilderCreator creator3, JsonPropertyBuilderCreator creator4) { addSub(creator1.

get()); addSub(creator2.

get()); addSub(creator3.

get()); addSub(creator4.

get()); return this; } /** * Attaches property builder for the given types. * @param creator1 * @param creator2 * @param creator3 * @param creator4 * @param creator5 * @return this * @author vvakame */ public

JsonModelBuilder add(JsonPropertyBuilderCreator creator1, JsonPropertyBuilderCreator creator2, JsonPropertyBuilderCreator creator3, JsonPropertyBuilderCreator creator4, JsonPropertyBuilderCreator creator5) { addSub(creator1.

get()); addSub(creator2.

get()); addSub(creator3.

get()); addSub(creator4.

get()); addSub(creator5.

get()); return this; } /** * Attaches property builder for the given types. * @param creator1 * @param creator2 * @param creator3 * @param creator4 * @param creator5 * @param creator6 * @return this * @author vvakame */ public

JsonModelBuilder add(JsonPropertyBuilderCreator creator1, JsonPropertyBuilderCreator creator2, JsonPropertyBuilderCreator creator3, JsonPropertyBuilderCreator creator4, JsonPropertyBuilderCreator creator5, JsonPropertyBuilderCreator creator6) { addSub(creator1.

get()); addSub(creator2.

get()); addSub(creator3.

get()); addSub(creator4.

get()); addSub(creator5.

get()); addSub(creator6.

get()); return this; } /** * Attaches property builder for the given types. * @param creator1 * @param creator2 * @param creator3 * @param creator4 * @param creator5 * @param creator6 * @param creator7 * @return this * @author vvakame */ public

JsonModelBuilder add(JsonPropertyBuilderCreator creator1, JsonPropertyBuilderCreator creator2, JsonPropertyBuilderCreator creator3, JsonPropertyBuilderCreator creator4, JsonPropertyBuilderCreator creator5, JsonPropertyBuilderCreator creator6, JsonPropertyBuilderCreator creator7) { addSub(creator1.

get()); addSub(creator2.

get()); addSub(creator3.

get()); addSub(creator4.

get()); addSub(creator5.

get()); addSub(creator6.

get()); addSub(creator7.

get()); return this; } /** * Attaches property builder for the given types. * @param creator1 * @param creator2 * @param creator3 * @param creator4 * @param creator5 * @param creator6 * @param creator7 * @param creator8 * @return this * @author vvakame */ public

JsonModelBuilder add(JsonPropertyBuilderCreator creator1, JsonPropertyBuilderCreator creator2, JsonPropertyBuilderCreator creator3, JsonPropertyBuilderCreator creator4, JsonPropertyBuilderCreator creator5, JsonPropertyBuilderCreator creator6, JsonPropertyBuilderCreator creator7, JsonPropertyBuilderCreator creator8) { addSub(creator1.

get()); addSub(creator2.

get()); addSub(creator3.

get()); addSub(creator4.

get()); addSub(creator5.

get()); addSub(creator6.

get()); addSub(creator7.

get()); addSub(creator8.

get()); return this; } /** * Attaches property builder for the given types. * @param creator1 * @param creator2 * @param creator3 * @param creator4 * @param creator5 * @param creator6 * @param creator7 * @param creator8 * @param creator9 * @return this * @author vvakame */ public

JsonModelBuilder add(JsonPropertyBuilderCreator creator1, JsonPropertyBuilderCreator creator2, JsonPropertyBuilderCreator creator3, JsonPropertyBuilderCreator creator4, JsonPropertyBuilderCreator creator5, JsonPropertyBuilderCreator creator6, JsonPropertyBuilderCreator creator7, JsonPropertyBuilderCreator creator8, JsonPropertyBuilderCreator creator9) { addSub(creator1.

get()); addSub(creator2.

get()); addSub(creator3.

get()); addSub(creator4.

get()); addSub(creator5.

get()); addSub(creator6.

get()); addSub(creator7.

get()); addSub(creator8.

get()); addSub(creator9.

get()); return this; } /** * Attaches property builder for the given types. * @param creator1 * @param creator2 * @param creator3 * @param creator4 * @param creator5 * @param creator6 * @param creator7 * @param creator8 * @param creator9 * @param creator10 * @return this * @author vvakame */ public

JsonModelBuilder add(JsonPropertyBuilderCreator creator1, JsonPropertyBuilderCreator creator2, JsonPropertyBuilderCreator creator3, JsonPropertyBuilderCreator creator4, JsonPropertyBuilderCreator creator5, JsonPropertyBuilderCreator creator6, JsonPropertyBuilderCreator creator7, JsonPropertyBuilderCreator creator8, JsonPropertyBuilderCreator creator9, JsonPropertyBuilderCreator creator10) { addSub(creator1.

get()); addSub(creator2.

get()); addSub(creator3.

get()); addSub(creator4.

get()); addSub(creator5.

get()); addSub(creator6.

get()); addSub(creator7.

get()); addSub(creator8.

get()); addSub(creator9.

get()); addSub(creator10.

get()); return this; } protected

void addSub(JsonPropertyBuilder builder) { map.put(builder.name, builder); } /** * Detaches property builder for the given types. * @param creators * @return this * @author vvakame */ public

JsonModelBuilder rm(JsonPropertyBuilderCreator... creators) { for (JsonPropertyBuilderCreator creator : creators) { rmSub(creator.

get()); } return this; } protected

void rmSub(JsonPropertyBuilder builder) { map.remove(builder.name); } /** * Detaches property builder for the given types. * @param creator * @return this * @author vvakame */ public

JsonModelBuilder rm(JsonPropertyBuilderCreator creator) { rmSub(creator.

get()); return this; } /** * Detaches property builder for the given types. * @param creator1 * @param creator2 * @return this * @author vvakame */ public

JsonModelBuilder rm(JsonPropertyBuilderCreator creator1, JsonPropertyBuilderCreator creator2) { rmSub(creator1.

get()); rmSub(creator2.

get()); return this; } /** * Detaches property builder for the given types. * @param creator1 * @param creator2 * @param creator3 * @return this * @author vvakame */ public

JsonModelBuilder rm(JsonPropertyBuilderCreator creator1, JsonPropertyBuilderCreator creator2, JsonPropertyBuilderCreator creator3) { rmSub(creator1.

get()); rmSub(creator2.

get()); rmSub(creator3.

get()); return this; } /** * Detaches property builder for the given types. * @param creator1 * @param creator2 * @param creator3 * @param creator4 * @return this * @author vvakame */ public

JsonModelBuilder rm(JsonPropertyBuilderCreator creator1, JsonPropertyBuilderCreator creator2, JsonPropertyBuilderCreator creator3, JsonPropertyBuilderCreator creator4) { rmSub(creator1.

get()); rmSub(creator2.

get()); rmSub(creator3.

get()); rmSub(creator4.

get()); return this; } /** * Detaches property builder for the given types. * @param creator1 * @param creator2 * @param creator3 * @param creator4 * @param creator5 * @return this * @author vvakame */ public

JsonModelBuilder rm(JsonPropertyBuilderCreator creator1, JsonPropertyBuilderCreator creator2, JsonPropertyBuilderCreator creator3, JsonPropertyBuilderCreator creator4, JsonPropertyBuilderCreator creator5) { rmSub(creator1.

get()); rmSub(creator2.

get()); rmSub(creator3.

get()); rmSub(creator4.

get()); rmSub(creator5.

get()); return this; } /** * Detaches property builder for the given types. * @param creator1 * @param creator2 * @param creator3 * @param creator4 * @param creator5 * @param creator6 * @return this * @author vvakame */ public

JsonModelBuilder rm(JsonPropertyBuilderCreator creator1, JsonPropertyBuilderCreator creator2, JsonPropertyBuilderCreator creator3, JsonPropertyBuilderCreator creator4, JsonPropertyBuilderCreator creator5, JsonPropertyBuilderCreator creator6) { rmSub(creator1.

get()); rmSub(creator2.

get()); rmSub(creator3.

get()); rmSub(creator4.

get()); rmSub(creator5.

get()); rmSub(creator6.

get()); return this; } /** * Detaches property builder for the given types. * @param creator1 * @param creator2 * @param creator3 * @param creator4 * @param creator5 * @param creator6 * @param creator7 * @return this * @author vvakame */ public

JsonModelBuilder rm(JsonPropertyBuilderCreator creator1, JsonPropertyBuilderCreator creator2, JsonPropertyBuilderCreator creator3, JsonPropertyBuilderCreator creator4, JsonPropertyBuilderCreator creator5, JsonPropertyBuilderCreator creator6, JsonPropertyBuilderCreator creator7) { rmSub(creator1.

get()); rmSub(creator2.

get()); rmSub(creator3.

get()); rmSub(creator4.

get()); rmSub(creator5.

get()); rmSub(creator6.

get()); rmSub(creator7.

get()); return this; } /** * Detaches property builder for the given types. * @param creator1 * @param creator2 * @param creator3 * @param creator4 * @param creator5 * @param creator6 * @param creator7 * @param creator8 * @return this * @author vvakame */ public

JsonModelBuilder rm(JsonPropertyBuilderCreator creator1, JsonPropertyBuilderCreator creator2, JsonPropertyBuilderCreator creator3, JsonPropertyBuilderCreator creator4, JsonPropertyBuilderCreator creator5, JsonPropertyBuilderCreator creator6, JsonPropertyBuilderCreator creator7, JsonPropertyBuilderCreator creator8) { rmSub(creator1.

get()); rmSub(creator2.

get()); rmSub(creator3.

get()); rmSub(creator4.

get()); rmSub(creator5.

get()); rmSub(creator6.

get()); rmSub(creator7.

get()); rmSub(creator8.

get()); return this; } /** * Detaches property builder for the given types. * @param creator1 * @param creator2 * @param creator3 * @param creator4 * @param creator5 * @param creator6 * @param creator7 * @param creator8 * @param creator9 * @return this * @author vvakame */ public

JsonModelBuilder rm(JsonPropertyBuilderCreator creator1, JsonPropertyBuilderCreator creator2, JsonPropertyBuilderCreator creator3, JsonPropertyBuilderCreator creator4, JsonPropertyBuilderCreator creator5, JsonPropertyBuilderCreator creator6, JsonPropertyBuilderCreator creator7, JsonPropertyBuilderCreator creator8, JsonPropertyBuilderCreator creator9) { rmSub(creator1.

get()); rmSub(creator2.

get()); rmSub(creator3.

get()); rmSub(creator4.

get()); rmSub(creator5.

get()); rmSub(creator6.

get()); rmSub(creator7.

get()); rmSub(creator8.

get()); rmSub(creator9.

get()); return this; } /** * Detaches property builder for the given types. * @param creator1 * @param creator2 * @param creator3 * @param creator4 * @param creator5 * @param creator6 * @param creator7 * @param creator8 * @param creator9 * @param creator10 * @return this * @author vvakame */ public

JsonModelBuilder rm(JsonPropertyBuilderCreator creator1, JsonPropertyBuilderCreator creator2, JsonPropertyBuilderCreator creator3, JsonPropertyBuilderCreator creator4, JsonPropertyBuilderCreator creator5, JsonPropertyBuilderCreator creator6, JsonPropertyBuilderCreator creator7, JsonPropertyBuilderCreator creator8, JsonPropertyBuilderCreator creator9, JsonPropertyBuilderCreator creator10) { rmSub(creator1.

get()); rmSub(creator2.

get()); rmSub(creator3.

get()); rmSub(creator4.

get()); rmSub(creator5.

get()); rmSub(creator6.

get()); rmSub(creator7.

get()); rmSub(creator8.

get()); rmSub(creator9.

get()); rmSub(creator10.

get()); return this; } /** * Detaches property builder for the given names. * @param names * @return this * @author vvakame */ public JsonModelBuilder rm(String... names) { for (String name : names) { rmSub(name); } return this; } protected void rmSub(String name) { map.remove(name); } /** * Sets if the exception should be thrown upon deserializing unknown keys. * @param treatUnknownKeyAsError * @return this * @author vvakame */ public JsonModelBuilder treatUnknownKeyAsError(boolean treatUnknownKeyAsError) { this.treatUnknownKeyAsError = treatUnknownKeyAsError; return this; } /** * Fixiates the current state for coding. * @return A JsonModelCoder instance for the actual coding. * @author vvakame */ public JsonModelCoder fix() { Map> properties = new LinkedHashMap>(); for (String key : map.keySet()) { JsonPropertyBuilder builder = map.get(key); JsonPropertyCoder fixed = builder.fix(); properties.put(key, fixed); } JsonModelCoder fixed = new JsonModelCoder(baseClass, treatUnknownKeyAsError, properties); return fixed; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy