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

com.belladati.sdk.impl.CachedListImpl Maven / Gradle / Ivy

Go to download

The BellaDati SDK allows accessing a BellaDati server from 3rd-party applications using Java. This project contains the implementation for standard Java.

The newest version!
package com.belladati.sdk.impl;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import com.belladati.sdk.util.CachedList;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ArrayNode;

abstract class CachedListImpl implements CachedList {

	private final List data = new ArrayList();

	private final BellaDatiServiceImpl service;
	private final String uri;
	private final String field;

	private boolean isLoaded = false;

	public CachedListImpl(BellaDatiServiceImpl service, String uri, String field) {
		this.service = service;
		this.uri = uri;
		this.field = field;
	}

	@Override
	public List get() {
		return Collections.unmodifiableList(data);
	}

	@Override
	public List toList() {
		return get();
	}

	@Override
	public CachedList load() {
		data.clear();
		JsonNode json = service.loadJson(uri);

		if (json.get(field) instanceof ArrayNode) {
			ArrayNode nodes = (ArrayNode) json.get(field);
			for (JsonNode node : nodes) {
				try {
					data.add(parse(service, node));
				} catch (ParseException e) {
					// nothing to do, just ignore
				}
			}
		}
		isLoaded = true;
		return this;
	}

	@Override
	public CachedList loadFirstTime() {
		if (!isLoaded()) {
			load();
		}
		return this;
	}

	@Override
	public boolean isLoaded() {
		return isLoaded;
	}

	@Override
	public String toString() {
		return data.toString();
	}

	protected abstract T parse(BellaDatiServiceImpl service, JsonNode node) throws ParseException;

	protected static class ParseException extends Exception {
		/** The serialVersionUID */
		private static final long serialVersionUID = -3237010782121691680L;

		public ParseException(JsonNode node) {
			super("Failed to parse node " + node);
		}

		public ParseException(JsonNode node, Throwable cause) {
			super("Failed to parse node " + node, cause);
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy