Package name.pehl.karaka.client.activity.dispatch

Source Code of name.pehl.karaka.client.activity.dispatch.ActivitiesRequest

package name.pehl.karaka.client.activity.dispatch;

import com.google.common.base.Splitter;
import com.gwtplatform.mvp.client.proxy.PlaceRequest;
import name.pehl.karaka.client.rest.UrlBuilder;

import static name.pehl.karaka.client.logging.Logger.Category.activity;
import static name.pehl.karaka.client.logging.Logger.warn;

/**
* @author $Author$
* @version $Revision$
*/
public class ActivitiesRequest
{
    public static final String ACTIVITIES_PARAM = "activities";
    public static final char SEPERATOR = '-';
    final String url;


    public ActivitiesRequest(PlaceRequest placeRequest)
    {
        this(placeRequest, new UrlBuilder().module("rest").path("activities"));
    }


    /**
     * Extra constructor to make it testable outside GWT
     *
     * @param placeRequest
     * @param urlBuilder
     */
    protected ActivitiesRequest(PlaceRequest placeRequest, UrlBuilder urlBuilder)
    {
        if (hasParameter(placeRequest, ACTIVITIES_PARAM))
        {
            String path = placeRequest.getParameter(ACTIVITIES_PARAM, null);
            for (String p : Splitter.on(SEPERATOR).omitEmptyStrings().trimResults().split(path))
            {
                urlBuilder.path(p);
            }
        }
        else
        {
            warn(activity, "No valid parameter in " + placeRequest.getParameterNames() + ". Fall back to current week");
            urlBuilder = urlBuilder.path("currentWeek");
        }
        this.url = urlBuilder.toUrl();
    }

    /**
     * For better readability
     *
     * @param placeRequest
     * @param parameter
     *
     * @return
     */
    private boolean hasParameter(PlaceRequest placeRequest, String parameter)
    {
        return placeRequest.getParameter(parameter, null) != null;
    }

    /**
     * Based on url
     *
     * @see java.lang.Object#hashCode()
     */
    @Override
    public int hashCode()
    {
        final int prime = 31;
        int result = 1;
        result = prime * result + (url == null ? 0 : url.hashCode());
        return result;
    }

    /**
     * Based on url
     *
     * @see java.lang.Object#equals(java.lang.Object)
     */
    @Override
    public boolean equals(Object obj)
    {
        if (this == obj)
        {
            return true;
        }
        if (obj == null)
        {
            return false;
        }
        if (!(obj instanceof ActivitiesRequest))
        {
            return false;
        }
        ActivitiesRequest other = (ActivitiesRequest) obj;
        if (url == null)
        {
            if (other.url != null)
            {
                return false;
            }
        }
        else if (!url.equals(other.url))
        {
            return false;
        }
        return true;
    }

    public String toUrl()
    {
        return url;
    }
}
TOP

Related Classes of name.pehl.karaka.client.activity.dispatch.ActivitiesRequest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.