package com.griddynamics.jagger.webclient.client.trends;
import com.griddynamics.jagger.webclient.client.mvp.AbstractPlaceHistoryMapper;
import com.griddynamics.jagger.webclient.client.mvp.PlaceWithParameters;
import java.util.*;
/**
* @author "Artem Kirillov" (akirillov@griddynamics.com)
* @since 6/20/12
*/
public class TrendsPlace extends PlaceWithParameters {
private static final String FRAGMENT = "fragment";
private String token;
private String url;
private List<LinkFragment> linkFragments = Collections.EMPTY_LIST;
public TrendsPlace(String token){
this.token = token;
}
public Set<String> getSessionTrends() {
if (linkFragments.size() == 1)
return linkFragments.iterator().next().getSessionTrends();
return Collections.EMPTY_SET;
}
public Set<String> getSelectedSessionIds() {
// get all sessionIds
Set<String> sessionIds = new HashSet<String>();
for (LinkFragment fragment : linkFragments) {
sessionIds.addAll(fragment.getSelectedSessionIds());
}
return sessionIds;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public void setLinkFragments(List<LinkFragment> linkFragments) {
this.linkFragments = linkFragments;
}
public List<LinkFragment> getLinkFragments() {
return linkFragments;
}
@Override
public Map<String, Set<String>> getParameters() {
Map<String, Set<String>> parameters = new LinkedHashMap<String, Set<String>>();
if (linkFragments.isEmpty()) {
return Collections.EMPTY_MAP;
} else if (linkFragments.size() == 1) {
return linkFragments.iterator().next().getParameters();
}
int index = 1;
for (LinkFragment linkFragment : linkFragments) {
Set<String> set = new HashSet<String>(1);
set.add('(' + linkFragment.getParametersAsString() + ')');
parameters.put(FRAGMENT + index++, set);
}
return parameters;
}
@Override
public void setParameters(Map<String, Set<String>> parameters) {
if (parameters != null && !parameters.isEmpty()) {
if (parameters.keySet().iterator().next().contains(FRAGMENT)) {
linkFragments = new ArrayList<LinkFragment>(parameters.size());
for (Map.Entry<String, Set<String>> entry : parameters.entrySet()) {
LinkFragment linkFragment = new LinkFragment();
String value = entry.getValue().iterator().next();
value = value.substring(1, value.length() - 1);
Map<String, Set<String>> params = AbstractPlaceHistoryMapper.getParameters(value);
linkFragment.setParameters(params);
linkFragments.add(linkFragment);
}
} else {
linkFragments = new ArrayList<LinkFragment>(1);
LinkFragment linkFragment = new LinkFragment();
linkFragment.setParameters(parameters);
linkFragments.add(linkFragment);
}
}
}
public void setUrl(String url) {
this.url = url;
}
public String getUrl() {
return url;
}
}