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

com.belladati.sdk.impl.ViewLoaderImpl 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.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Locale;

import org.apache.http.client.utils.URIBuilder;

import com.belladati.sdk.exception.InternalConfigurationException;
import com.belladati.sdk.filter.Filter;
import com.belladati.sdk.impl.TableViewImpl.TableImpl;
import com.belladati.sdk.intervals.DateUnit;
import com.belladati.sdk.intervals.Interval;
import com.belladati.sdk.intervals.TimeUnit;
import com.belladati.sdk.view.ViewLoader;
import com.belladati.sdk.view.ViewType;
import com.fasterxml.jackson.databind.JsonNode;

public class ViewLoaderImpl implements ViewLoader {

	private final BellaDatiServiceImpl service;
	private final String viewId;
	private final ViewType viewType;
	private final List> filters = new ArrayList>();

	private Interval dateInterval;
	private Interval timeInterval;

	private Locale locale;

	public ViewLoaderImpl(BellaDatiServiceImpl service, String viewId, ViewType viewType) {
		this.service = service;
		this.viewId = viewId;
		this.viewType = viewType;
	}

	@Override
	public String getId() {
		return viewId;
	}

	@Override
	public ViewType getType() {
		return viewType;
	}

	@Override
	public ViewLoader setDateInterval(Interval dateInterval) {
		this.dateInterval = dateInterval;
		return this;
	}

	@Override
	public ViewLoader setTimeInterval(Interval timeInterval) {
		this.timeInterval = timeInterval;
		return this;
	}

	@Override
	public ViewLoader addFilters(Filter... filters) {
		return addFilters(Arrays.asList(filters));
	}

	@Override
	public ViewLoader addFilters(Collection> filters) {
		this.filters.addAll(filters);
		return this;
	}

	@Override
	public ViewLoader setLocale(Locale locale) {
		this.locale = locale;
		return this;
	}

	@Override
	public Object loadContent() {
		try {
			URIBuilder builder = new URIBuilder("api/reports/views/" + viewId + "/" + viewType.getUri());

			if (viewType == ViewType.IMAGE) {
				return new ImageViewImpl.ImageImpl(viewId, (BufferedImage) service.loadImage(builder.build().toString()));
			}

			JsonNode json = service.loadJson(service
				.appendLocale(service.appendDateTime(service.appendFilter(builder, filters), dateInterval, timeInterval), locale)
				.build().toString());
			if (viewType == ViewType.TABLE) {
				return new TableImpl(service, viewId, json, filters).setLocale(locale);
			}
			return json;
		} catch (URISyntaxException e) {
			throw new InternalConfigurationException(e);
		} catch (IOException e) {
			throw new InternalConfigurationException(e);
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy