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

com.liferay.mobile.sdk.SDKBuilder Maven / Gradle / Ivy

The newest version!
/**
 * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 2.1 of the License, or (at your option)
 * any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 */

package com.liferay.mobile.sdk;

import com.liferay.mobile.sdk.http.Discovery;
import com.liferay.mobile.sdk.http.DiscoveryResponseHandler;
import com.liferay.mobile.sdk.util.Validator;

import java.io.IOException;
import java.io.InputStream;

import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

/**
 * @author Bruno Farache
 */
public class SDKBuilder {

	public static void main(String[] args) throws IOException {
		SDKBuilder builder = new SDKBuilder();

		Map arguments = builder.parseArguments(args);

		String[] platforms = arguments.get("platforms").split(",");
		String url = arguments.get("url");
		String[] contexts = arguments.get("contexts").split(",");
		String packageName = arguments.get("packageName");
		String filter = arguments.get("filter");
		int portalVersion = Integer.valueOf(arguments.get("portalVersion"));
		String destination = arguments.get("destination");

		try {
			builder.build(
				platforms, url, contexts, packageName, filter, portalVersion,
				destination);
		}
		catch (Exception e) {
			_log.log(Level.SEVERE, e.getMessage(), e);
		}
	}

	public SDKBuilder() throws IOException {
		_properties = new Properties();
		InputStream is = getClass().getResourceAsStream("/builder.properties");
		_properties.load(is);
	}

	public void build(
			String[] platforms, String url, String[] contexts,
			String packageName, String filter, int portalVersion,
			String destination)
		throws Exception {

		for (String context : contexts) {
			Discovery discovery = discover(url, context, filter);

			for (String platform : platforms) {
				String className = _properties.getProperty(platform);
				Builder builder = (Builder)Class.forName(
					className).newInstance();

				if (Validator.isNull(filter)) {
					builder.buildAll(
						discovery, packageName, portalVersion, destination);
				}
				else {
					builder.build(
						discovery, discovery.getActions(), packageName,
						portalVersion, filter, destination);
				}
			}
		}
	}

	public Discovery discover(String url, String context, String filter)
		throws Exception {

		StringBuilder sb = new StringBuilder();

		sb.append(url);

		sb.append("/api/jsonws?discover");

		if (Validator.isNull(filter)) {
			sb.append("=/*");
		}
		else {
			sb.append("=/");
			sb.append(filter);
			sb.append("/*");
		}

		if ("portal".equals(context)) {
			context = null;
		}

		if (Validator.isNotNull(context)) {
			sb.append("&contextName=");
			sb.append(context);
		}

		HttpClient client = new DefaultHttpClient();
		HttpGet get = new HttpGet(sb.toString());
		DiscoveryResponseHandler handler = new DiscoveryResponseHandler();

		return client.execute(get, handler);
	}

	protected Map parseArguments(String[] args) {
		Map arguments = new HashMap();

		for (String arg : args) {
			int pos = arg.indexOf('=');

			if (pos <= 0) {
				throw new IllegalArgumentException("Bad argument " + arg);
			}

			String key = arg.substring(0, pos).trim();
			String value = arg.substring(pos + 1).trim();

			arguments.put(key, value);
		}

		return arguments;
	}

	private static final Logger _log = Logger.getLogger(
		SDKBuilder.class.getName());

	private Properties _properties;

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy