de.unihannover.l3s.mws.bean.SearchAll.java Source code

Java tutorial

Introduction

Here is the source code for de.unihannover.l3s.mws.bean.SearchAll.java

Source

/*******************************************************************************
 * Copyright (c) 2010 Red Hat, Inc.
 * Distributed under license by Red Hat, Inc. All rights reserved.
 * This program is made available under the terms of the
 * Eclipse Public License v1.0 which accompanies this distribution,
 * and is available at http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     Red Hat, Inc. - initial API and implementation
 ******************************************************************************/
package de.unihannover.l3s.mws.bean;

import java.net.MalformedURLException;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;

import net.billylieurance.azuresearch.AzureSearchImageQuery;
import net.billylieurance.azuresearch.AzureSearchImageResult;
import net.billylieurance.azuresearch.AzureSearchResultSet;
import net.billylieurance.azuresearch.AzureSearchVideoQuery;
import net.billylieurance.azuresearch.AzureSearchVideoResult;
import net.billylieurance.azuresearch.AzureSearchWebQuery;
import net.billylieurance.azuresearch.AzureSearchWebResult;
import net.billylieurance.azuresearch.BingThumbnail;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.google.common.base.Joiner;

import de.unihannover.l3s.mws.dao.GeneralsettingsDao;
import de.unihannover.l3s.mws.dao.RicercaDao;
import de.unihannover.l3s.mws.dao.SiteSetDao;
import de.unihannover.l3s.mws.dao.StoryboardDao;
import de.unihannover.l3s.mws.dao.TrackDao;
import de.unihannover.l3s.mws.dao.UtenteDao;
import de.unihannover.l3s.mws.model.Generalsettings;
import de.unihannover.l3s.mws.model.Ricerca;
import de.unihannover.l3s.mws.model.Risultati;
import de.unihannover.l3s.mws.model.SearchImageResult;
import de.unihannover.l3s.mws.model.SearchResult;
import de.unihannover.l3s.mws.model.SearchVideoResult;
import de.unihannover.l3s.mws.model.SearchWebResult;
import de.unihannover.l3s.mws.model.SiteSet;
import de.unihannover.l3s.mws.model.SiteSetItem;
import de.unihannover.l3s.mws.model.Storyboard;
import de.unihannover.l3s.mws.model.StoryboardItem;
import de.unihannover.l3s.mws.model.Track;
import de.unihannover.l3s.mws.model.YData;
import de.unihannover.l3s.mws.model.timeline.Asset;
import de.unihannover.l3s.mws.model.timeline.Timeline;
import de.unihannover.l3s.mws.model.timeline.WholeTimeline;
import de.unihannover.l3s.mws.util.DateManager;
import de.unihannover.l3s.mws.util.StatsManager;
import de.unihannover.l3s.mws.util.TextManager;

/**
 * Created by JBoss Tools
 */
@ManagedBean(name = "searchall")
@ViewScoped
public class SearchAll {
    // private String searchtext;
    private String searchtype = "Web";
    // private String searchDataPie="";
    private ArrayList<String> searchtypelist = null;
    // private ArrayList<String> siteAvailablelist=null;
    // private List<String> siteSelectedlist;
    // private ArrayList<SearchResult> searchResult=null;
    private String timeline;
    private List<String> searchterms;
    @ManagedProperty(value = "#{user}")
    private User user;

    private String name;
    private Ricerca r;
    private Storyboard storyboard;

    private String searchDataPie1 = "";
    private String searchDataPie2 = "";
    private String searchDataPie3 = "";

    private String searchDataBar1 = "";

    private String searchWeightedDataPie1 = "";

    private String searchLangDataPie1 = "";

    private ArrayList<String> siteAvailablelist1 = null;
    private ArrayList<String> siteAvailablelist2 = null;
    private ArrayList<String> siteAvailablelist3 = null;

    private ArrayList<String> siteAvailableDomainlist1 = null;

    private List<String> siteSelectedlist1;
    private List<String> siteSelectedlist2;
    private List<String> siteSelectedlist3;

    private List<String> siteSelectedDomainlist1;

    private List<String> excludeWeb;
    private List<String> excludeImg;
    private List<String> excludeVid;

    private ArrayList<SearchResult> searchResult1 = null;
    private ArrayList<SearchResult> searchResult2 = null;
    private ArrayList<SearchResult> searchResult3 = null;

    private ArrayList<SearchResult> searchResultVideo = null;
    private ArrayList<SearchResult> searchResultWeb = null;
    private ArrayList<SearchResult> searchResultImg = null;

    private String storybname;

    private String resultId = "0";
    private String storydata;

    private List<StoryboardItem> newstoryboardlist;

    private List<Generalsettings> langlist;
    private String langlistsel;

    private List<Generalsettings> loclist;
    private String loclistsel;
    private Map<String, String> locMap;

    private String storyboardsel;
    private List<Storyboard> userStoryboards;

    private String siteSetId;
    private String siteText;
    private String contextmenuchild;

    private String searchsettings = "";

    private List<String> teasers;

    public enum Type {
        REFINE_PIE, REFINE_WEIGHTED_PIE, REFINE_DOMAIN_PIE
    }

    List<StoryboardItem> storyboardlist;

    public List<StoryboardItem> getStoryboardlist() {
        return storyboardlist;
    }

    public void setStoryboardlist(List<StoryboardItem> storyboardlist) {
        this.storyboardlist = storyboardlist;
    }

    public List<Storyboard> getUserStoryboards() {
        return userStoryboards;
    }

    public void setUserStoryboards(List<Storyboard> userStoryboards) {
        this.userStoryboards = userStoryboards;
    }

    public Storyboard getStoryboard() {
        return storyboard;
    }

    public void setStoryboard(Storyboard storyboard) {
        this.storyboard = storyboard;
    }

    public String getStoryboardsel() {
        return storyboardsel;
    }

    public void setStoryboardsel(String storyboardsel) {
        this.storyboardsel = storyboardsel;
    }

    public String getStorybname() {
        return storybname;
    }

    public void setStorybname(String storybname) {
        this.storybname = storybname;
    }

    public String getContextmenuchild() {
        return contextmenuchild;
    }

    public void setContextmenuchild(String contextmenuchild) {
        this.contextmenuchild = contextmenuchild;
    }

    public String getStorydata() {
        return storydata;
    }

    public void setStorydata(String storydata) {
        this.storydata = storydata;
    }

    public String getSiteSetId() {
        return siteSetId;
    }

    public void setSiteSetId(String siteSetId) {
        this.siteSetId = siteSetId;
    }

    public String getSiteText() {
        return siteText;
    }

    public void setSiteText(String siteText) {
        this.siteText = siteText;
    }

    public List<String> getTeasers() {
        return teasers;
    }

    public void setTeasers(List<String> teasers) {
        this.teasers = teasers;
    }

    public void addToSiteSetting() {
        Long sitesetid = Long.parseLong(this.siteSetId);
        SiteSet ss = null;
        SiteSetDao ssd = new SiteSetDao();
        if (sitesetid == 0) {
            ss = new SiteSet();
            ss.setName("New Group");
            ss.setUtente(this.user.getUtente());
        } else {
            ss = ssd.getSiteSetById(sitesetid);
        }
        SiteSetItem ssi = new SiteSetItem();
        ssi.setSiteSet(ss);
        ssi.setUrl(this.siteText);
        if (ss.getSiteSetItem() == null)
            ss.setSiteSetItem(new ArrayList<SiteSetItem>());
        ss.getSiteSetItem().add(ssi);
        ssd.addSiteSet(ss);
        loadContextMenu();
    }

    public void savelocalesettings() {
        List<Generalsettings> toremove = new ArrayList<Generalsettings>();

        for (Generalsettings gs : this.getUser().getUtente().getGeneralsettings()) {
            if ((gs.getType().compareTo("lang") == 0) || (gs.getType().compareTo("loc") == 0))
                toremove.add(gs);
        }
        for (Generalsettings gs : toremove) {
            this.getUser().getUtente().getGeneralsettings().remove(gs);
        }

        this.searchsettings = "";

        // if (langlist.size()!=langlistsel.size())
        for (Generalsettings gs : langlist) {
            /* boolean trovato=false;
            for (String id : langlistsel){
               if (gs.getId() == Integer.parseInt(id)) {
              trovato = true; break;
               }
            }
            if (trovato==false) */
            // for (String id : langlistsel)
            if (gs.getId() == Integer.parseInt(langlistsel)) {
                this.getUser().getUtente().getGeneralsettings().add(gs);
            }

        }
        // if (loclist.size()!=loclistsel.size())
        for (Generalsettings gs : loclist) {
            /* boolean trovato=false;
            for (String id : loclistsel){
               if (gs.getId() == Integer.parseInt(id)) {
              trovato = true; break;
               }
            }
            if (trovato==false) */
            // for (String id : loclistsel)
            if (gs.getId() == Integer.parseInt(loclistsel)) {
                this.getUser().getUtente().getGeneralsettings().add(gs);
            }
        }
        loadRestriction();
        UtenteDao udao = new UtenteDao();
        udao.updateUtente(this.getUser().getUtente());
    }

    public String cotext(String term) {
        TextManager tmgr = new TextManager();
        tmgr.setCotextrange(this.user.getUtente().getCotextrange());
        return tmgr.cotextTable(term, teasers);
    }

    public String multiplecotext() {
        TextManager tmgr = new TextManager();
        tmgr.setCotextrange(this.user.getUtente().getCotextrange());
        return tmgr.multipleCotextTable(searchterms, teasers);
    }

    private boolean hasGS(Generalsettings g) {
        for (Generalsettings gs : this.user.getUtente().getGeneralsettings()) {
            if (gs.getId() == g.getId())
                return true;
        }
        return false;
    }

    private void loadList() {
        List<Generalsettings> listags;
        GeneralsettingsDao gsdao = new GeneralsettingsDao();
        listags = gsdao.getAllGeneralsettings();

        langlist = new ArrayList<Generalsettings>();
        langlistsel = new String();
        loclist = new ArrayList<Generalsettings>();
        loclistsel = new String();

        for (Generalsettings gs : listags) {
            if (gs.getType().compareTo("lang") == 0) {
                langlist.add(gs);
                if (hasGS(gs)) {
                    langlistsel = "" + gs.getId();
                }
            } else if (gs.getType().compareTo("loc") == 0) {
                loclist.add(gs);
                if (hasGS(gs)) {
                    loclistsel = "" + gs.getId();
                }
            }
        }
        /* 
        if (langlistsel.size()==0)
           for (Generalsettings gs : langlist)
        langlistsel.add(""+gs.getId());
        if (loclistsel.size()==0)
           for (Generalsettings gs : loclist)
        loclistsel.add(""+gs.getId());
        */
    }

    private void loadRestriction() {
        searchsettings = "";
        Set<String> siteset = new HashSet<String>();
        for (Generalsettings gs : this.user.getUtente().getGeneralsettings()) {
            if (gs.getType().compareTo("lang") == 0) {
                if (gs.getValue().compareTo("All") != 0) {
                    this.searchsettings += "<b>Language:</b> " + gs.getValue() + "<br />";
                }
            }
            if (gs.getType().compareTo("loc") == 0) {
                if (gs.getValue().compareTo("All") != 0) {
                    this.searchsettings += "<b>Localization:</b> " + gs.getValue() + "<br />";
                }
            }
            if (gs.getType().compareTo("web") == 0) {
                this.searchsettings += "<b>Excluding for web:</b> " + gs.getValue() + "<br />";
            }
            if (gs.getType().compareTo("img") == 0) {
                this.searchsettings += "<b>Excluding for image:</b> " + gs.getValue() + "<br />";
            }
            if (gs.getType().compareTo("video") == 0) {
                this.searchsettings += "<b>Excluding for video:</b> " + gs.getValue() + "<br />";
            }
        }
        if (this.user.getUtente().getSitesetitem() != null)
            for (SiteSetItem ssi : this.user.getUtente().getSitesetitem()) {
                siteset.add(ssi.getSiteSet().getName());
            }
        if (siteset.size() > 0)
            this.searchsettings += "<b>Selected Site set:</b> ";
        for (String s : siteset)
            this.searchsettings += s + " | ";
        if (siteset.size() > 0)
            this.searchsettings += "<br />";
    }

    public List<Generalsettings> getLoclist() {
        return loclist;
    }

    public void setLoclist(List<Generalsettings> loclist) {
        this.loclist = loclist;
    }

    public String getLoclistsel() {
        return loclistsel;
    }

    public void setLoclistsel(String loclistsel) {
        this.loclistsel = loclistsel;
    }

    public List<Generalsettings> getLanglist() {
        return langlist;
    }

    public void setLanglist(List<Generalsettings> langlist) {
        this.langlist = langlist;
    }

    public String getLanglistsel() {
        return langlistsel;
    }

    public void setLanglistsel(String langlistsel) {
        this.langlistsel = langlistsel;
    }

    /*public boolean isNameEmpty() {
       System.out.println("NAME"+name+"<");
       if (this.name.trim().compareTo("")==0)
     return true;
           
       return false;
    }*/

    public String getResultId() {
        return resultId;
    }

    public void setResultId(String resultId) {
        this.resultId = resultId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSearchDataPie1() {
        return searchDataPie1;
    }

    public void setSearchDataPie1(String searchDataPie1) {
        this.searchDataPie1 = searchDataPie1;
    }

    public String getSearchDataPie2() {
        return searchDataPie2;
    }

    public void setSearchDataPie2(String searchDataPie2) {
        this.searchDataPie2 = searchDataPie2;
    }

    public String getSearchDataPie3() {
        return searchDataPie3;
    }

    public void setSearchDataPie3(String searchDataPie3) {
        this.searchDataPie3 = searchDataPie3;
    }

    public String getSearchDataBar1() {
        return searchDataBar1;
    }

    public void setSearchDataBar1(String searchDataBar1) {
        this.searchDataBar1 = searchDataBar1;
    }

    public String getSearchWeightedDataPie1() {
        return searchWeightedDataPie1;
    }

    public void setSearchWeightedDataPie1(String searchWeightedDataPie1) {
        this.searchWeightedDataPie1 = searchWeightedDataPie1;
    }

    public String getSearchLangDataPie1() {
        return searchLangDataPie1;
    }

    public void setSearchLangDataPie1(String searchLangDataPie1) {
        this.searchLangDataPie1 = searchLangDataPie1;
    }

    public ArrayList<String> getSiteAvailablelist1() {
        return siteAvailablelist1;
    }

    public void setSiteAvailablelist1(ArrayList<String> siteAvailablelist1) {
        this.siteAvailablelist1 = siteAvailablelist1;
    }

    public ArrayList<String> getSiteAvailablelist2() {
        return siteAvailablelist2;
    }

    public void setSiteAvailablelist2(ArrayList<String> siteAvailablelist2) {
        this.siteAvailablelist2 = siteAvailablelist2;
    }

    public ArrayList<String> getSiteAvailablelist3() {
        return siteAvailablelist3;
    }

    public void setSiteAvailablelist3(ArrayList<String> siteAvailablelist3) {
        this.siteAvailablelist3 = siteAvailablelist3;
    }

    public ArrayList<String> getSiteAvailableDomainlist1() {
        return siteAvailableDomainlist1;
    }

    public void setSiteAvailableDomainlist1(ArrayList<String> siteAvailableDomainlist1) {
        this.siteAvailableDomainlist1 = siteAvailableDomainlist1;
    }

    public List<String> getSiteSelectedDomainlist1() {
        return siteSelectedDomainlist1;
    }

    public void setSiteSelectedDomainlist1(List<String> siteSelectedDomainlist1) {
        this.siteSelectedDomainlist1 = siteSelectedDomainlist1;
    }

    public List<String> getSiteSelectedlist1() {
        return siteSelectedlist1;
    }

    public void setSiteSelectedlist1(List<String> siteSelectedlist1) {
        this.siteSelectedlist1 = siteSelectedlist1;
    }

    public List<String> getSiteSelectedlist2() {
        return siteSelectedlist2;
    }

    public void setSiteSelectedlist2(List<String> siteSelectedlist2) {
        this.siteSelectedlist2 = siteSelectedlist2;
    }

    public List<String> getSiteSelectedlist3() {
        return siteSelectedlist3;
    }

    public void setSiteSelectedlist3(List<String> siteSelectedlist3) {
        this.siteSelectedlist3 = siteSelectedlist3;
    }

    public ArrayList<SearchResult> getSearchResult1() {
        return searchResult1;
    }

    public void setSearchResult1(ArrayList<SearchResult> searchResult1) {
        this.searchResult1 = searchResult1;
    }

    public ArrayList<SearchResult> getSearchResult2() {
        return searchResult2;
    }

    public void setSearchResult2(ArrayList<SearchResult> searchResult2) {
        this.searchResult2 = searchResult2;
    }

    public ArrayList<SearchResult> getSearchResult3() {
        return searchResult3;
    }

    public void setSearchResult3(ArrayList<SearchResult> searchResult3) {
        this.searchResult3 = searchResult3;
    }

    public String getSearchsettings() {
        return searchsettings;
    }

    public void setSearchsettings(String searchsettings) {
        this.searchsettings = searchsettings;
    }

    @PostConstruct
    public void init() {
        searchterms = new ArrayList<String>();
        siteAvailablelist1 = new ArrayList<String>();
        siteAvailablelist2 = new ArrayList<String>();
        siteAvailablelist3 = new ArrayList<String>();
        siteAvailableDomainlist1 = new ArrayList<String>();
        siteSelectedDomainlist1 = new ArrayList<String>();
        siteSelectedlist1 = new ArrayList<String>();
        siteSelectedlist2 = new ArrayList<String>();
        siteSelectedlist3 = new ArrayList<String>();
        searchterms.add("");

        Set<Generalsettings> gensets = this.user.getUtente().getGeneralsettings();
        excludeWeb = new ArrayList<String>();
        excludeImg = new ArrayList<String>();
        excludeVid = new ArrayList<String>();
        for (Generalsettings gs : gensets) {
            if (gs.getType().compareTo("web") == 0)
                excludeWeb.add(gs.getValue());
            if (gs.getType().compareTo("img") == 0)
                excludeImg.add(gs.getValue());
            if (gs.getType().compareTo("video") == 0)
                excludeVid.add(gs.getValue());
        }
        loadList();
        locMap = new HashMap<String, String>();
        locMap.put("Italy", "it");
        locMap.put("Spain", "es");
        locMap.put("France", "fr");
        locMap.put("Germany", "de");
        locMap.put("United Kingdom", "uk");
        storyboardlist = new ArrayList<StoryboardItem>();
        newstoryboardlist = new ArrayList<StoryboardItem>();
        teasers = new ArrayList<String>();
        loadContextMenu();
        loadStoryboard();
        loadRestriction();
    }

    private void loadStoryboard() {
        userStoryboards = new ArrayList<Storyboard>();
        StoryboardDao sbd = new StoryboardDao();
        for (Storyboard sb : sbd.getStoryboardByUser(this.user.getUtente())) {
            this.userStoryboards.add(sb);
        }
    }

    private void loadContextMenu() {
        SiteSetDao ssd = new SiteSetDao();
        List<SiteSet> list = ssd.getAllSiteSetByUser(this.getUser().getUtente());
        contextmenuchild = " ";
        for (SiteSet s : list) {
            contextmenuchild += " {title: \"" + s.getName() + "\", cmd: \"" + s.getId() + "\"},";
        }
        if (hasSiteSet(list, "New Group") == false)
            contextmenuchild += "{title: \"New Group\", cmd: \"0\"} ";
        else
            contextmenuchild = contextmenuchild.substring(0, contextmenuchild.length() - 1);
    }

    private boolean hasSiteSet(List<SiteSet> list, String string) {
        for (SiteSet s : list) {
            if (s.getName().compareTo(string) == 0)
                return true;
        }
        return false;
    }

    public void addWebRes(SearchResult sr) {
        StoryboardItem a = new StoryboardItem();
        a.setId(null);
        a.setTitle(sr.getTitle());
        a.setWebcontent("<iframe id=\"scaled-frame\" src=\"" + sr.getUrl()
                + "\" sandbox=\"allow-forms allow-scripts\"></iframe>");
        a.setContent(sr.getUrl());
        a.setType("web");
        a.setPos(Long.parseLong("" + newstoryboardlist.size()));
        newstoryboardlist.add(a);
        storyboardlist = newstoryboardlist;
    }

    public void addVideoRes(SearchResult sr) {
        StoryboardItem a = new StoryboardItem();
        a.setId(null);
        a.setTitle(sr.getTitle());
        SearchVideoResult svr = (SearchVideoResult) sr;
        a.setWebcontent("<img src=\"" + svr.getThumbnail().getMediaUrl() + "\" width=\""
                + svr.getThumbnail().getWidth() + "\" height=\"" + svr.getThumbnail().getHeight() + "\" />");
        a.setContent(sr.getUrl());
        a.setType("video");
        a.setPos(Long.parseLong("" + newstoryboardlist.size()));
        newstoryboardlist.add(a);
        storyboardlist = newstoryboardlist;
    }

    public void addImgRes(SearchResult sr) {
        StoryboardItem a = new StoryboardItem();
        a.setId(null);
        a.setTitle(sr.getTitle());
        SearchImageResult svr = (SearchImageResult) sr;
        a.setWebcontent("<img src=\"" + svr.getUrl() + "\" width=\"100\" />");
        a.setContent(sr.getUrl());
        a.setType("image");
        a.setPos(Long.parseLong("" + newstoryboardlist.size()));
        newstoryboardlist.add(a);
        storyboardlist = newstoryboardlist;
    }

    public void RemoveWebRes(StoryboardItem sr) {
        storyboardlist.remove(sr);
    }

    public void reorderList() {
        newstoryboardlist = new ArrayList<StoryboardItem>();
        System.out.println(storydata);
        storydata = storydata.replace("widget[]=", "");
        storydata = storydata.replace("col1:", "");
        String[] pos = storydata.split("&");
        System.out.println("");
        int i = 0;
        for (String s : pos) {

            int id = Integer.parseInt(s);
            StoryboardItem sbi = storyboardlist.get(id);
            System.out.println("Reordering:" + s + " - " + sbi.getTitle());
            sbi.setPos(Long.parseLong("" + i));
            newstoryboardlist.add(sbi);
            i++;
        }

    }

    public void extend() {
        searchterms.add("");
    }

    public <T> List<T> intersection(List<T> list1, List<T> list2) {
        List<T> list = new ArrayList<T>();

        for (T t : list1) {
            if (list2.contains(t)) {
                list.add(t);
            }
        }

        return list;
    }

    public List<String> getSearchterms() {
        // searchterms.removeAll(Collections.singleton(""));
        return searchterms;
    }

    public void setSearchterms(List<String> searchterms) {
        this.searchterms = searchterms;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    /* public ArrayList<String> getSiteAvailablelist() {
       return siteAvailablelist;
    }
        
    public void setSiteAvailablelist(ArrayList<String> siteAvailablelist) {
       this.siteAvailablelist = siteAvailablelist;
    }
        
    public List<String> getSiteSelectedlist() {
       return siteSelectedlist;
    }
        
    public void setSiteSelectedlist(List<String> siteSelectedlist) {
       this.siteSelectedlist = siteSelectedlist;
    } */

    private void alignSiteDomain() {
        // siteAvailableDomainlist1=new ArrayList<String>();
        Set<String> domains = new HashSet<String>();
        for (String s : siteAvailablelist1)
            domains.add(getTldString("http://" + s));
        siteAvailableDomainlist1.clear();
        siteAvailableDomainlist1.addAll(domains);

        // siteSelectedDomainlist1=new ArrayList<String>();
        domains.clear();
        for (String s : siteSelectedlist1)
            domains.add(getTldString("http://" + s));
        siteSelectedDomainlist1.clear();
        siteSelectedDomainlist1.addAll(domains);
    }

    public void loadSearch(Long id) {
        id = Long.parseLong(this.resultId);
        if (id != 0) {

            RicercaDao rd = new RicercaDao();
            Ricerca ric = rd.getRicercaById(id);
            this.r = ric;
            this.name = ric.getNome();
            try {

                TrackDao td = new TrackDao();
                Track track = new Track();
                Calendar c = new GregorianCalendar();
                track.setDate(c.getTime());
                track.setOperation("load_search");
                track.setParam1(this.name);
                track.setUtente(this.user.getUtente());
                td.addTrack(track);

                JSONObject avList = new JSONObject(ric.getSiteAvailablelists());
                JSONArray arr1 = (JSONArray) avList.get("siteAvailablelist1");
                this.siteAvailablelist1 = new ArrayList<String>();
                for (int i = 0; i < arr1.length(); i++)
                    this.siteAvailablelist1.add(arr1.get(i).toString());

                arr1 = (JSONArray) avList.get("siteAvailablelist2");
                this.siteAvailablelist2 = new ArrayList<String>();
                for (int i = 0; i < arr1.length(); i++)
                    this.siteAvailablelist2.add(arr1.get(i).toString());

                arr1 = (JSONArray) avList.get("siteAvailablelist3");
                this.siteAvailablelist3 = new ArrayList<String>();
                for (int i = 0; i < arr1.length(); i++)
                    this.siteAvailablelist3.add(arr1.get(i).toString());

                JSONObject slList = new JSONObject(ric.getSiteSelectedlists());
                arr1 = (JSONArray) slList.get("siteSelectedlist1");
                this.siteSelectedlist1 = new ArrayList<String>();
                for (int i = 0; i < arr1.length(); i++)
                    this.siteSelectedlist1.add(arr1.get(i).toString());

                arr1 = (JSONArray) slList.get("siteSelectedlist2");
                this.siteSelectedlist2 = new ArrayList<String>();
                for (int i = 0; i < arr1.length(); i++)
                    this.siteSelectedlist2.add(arr1.get(i).toString());

                arr1 = (JSONArray) slList.get("siteSelectedlist3");
                this.siteSelectedlist3 = new ArrayList<String>();
                for (int i = 0; i < arr1.length(); i++)
                    this.siteSelectedlist3.add(arr1.get(i).toString());

                JSONObject stList = new JSONObject(ric.getSearchterms());
                arr1 = (JSONArray) stList.get("searchTerms");
                this.searchterms = new ArrayList<String>();
                for (int i = 0; i < arr1.length(); i++)
                    this.searchterms.add(arr1.get(i).toString());

                JSONObject dpList = new JSONObject(ric.getSearchDataPies());
                this.searchDataPie1 = dpList.get("searchDataPie1").toString();
                this.searchDataPie2 = dpList.get("searchDataPie2").toString();
                this.searchDataPie3 = dpList.get("searchDataPie3").toString();

                JSONObject WdpList = new JSONObject(ric.getSearchWeightedDataPies());
                this.searchWeightedDataPie1 = WdpList.get("searchWeightedPie1").toString();

                JSONObject DdpList = new JSONObject(ric.getSearchDomainDataPies());
                this.searchLangDataPie1 = DdpList.get("searchDomainPie1").toString();

                searchResultWeb = new ArrayList<SearchResult>();
                searchResultVideo = new ArrayList<SearchResult>();
                searchResultImg = new ArrayList<SearchResult>();

                List<String> exclude1 = new ArrayList<String>(siteAvailablelist1);
                exclude1.removeAll(siteSelectedlist1);

                List<String> exclude2 = new ArrayList<String>(siteAvailablelist2);
                exclude2.removeAll(siteSelectedlist2);

                List<String> exclude3 = new ArrayList<String>(siteAvailablelist3);
                exclude3.removeAll(siteSelectedlist3);

                teasers = new ArrayList<String>();
                for (Risultati r : ric.getRisultati()) {
                    JSONObject ris = new JSONObject(r.getRisultato());

                    if (r.getType().equals("WEB")) {
                        SearchWebResult rweb = new SearchWebResult();
                        rweb.setTitle(ris.getString("title"));
                        rweb.setDescription(ris.getString("description"));
                        teasers.add(ris.getString("description"));
                        rweb.setUrl(ris.getString("url"));
                        searchResultWeb.add(rweb);
                    }
                    if (r.getType().equals("VIDEO")) {
                        SearchVideoResult rvideo = new SearchVideoResult();
                        rvideo.setTitle(ris.getString("title"));
                        rvideo.setRuntime(ris.getString("runtime"));
                        JSONObject thumbnail = (JSONObject) ris.get("thumbnail");
                        BingThumbnail bt = new BingThumbnail();
                        if (thumbnail.has("fileSize"))
                            bt.setFileSize(thumbnail.getLong("fileSize"));
                        if (thumbnail.has("height"))
                            bt.setHeight(thumbnail.getInt("height"));
                        if (thumbnail.has("mediaUrl"))
                            bt.setMediaUrl(thumbnail.getString("mediaUrl"));
                        if (thumbnail.has("width"))
                            bt.setHeight(thumbnail.getInt("width"));
                        if (thumbnail.has("contentType"))
                            bt.setContentType(thumbnail.getString("contentType"));
                        rvideo.setThumbnail(bt);
                        if (ris.has("url"))
                            rvideo.setUrl(ris.getString("url"));
                        else
                            System.out.println("SENZA URL : " + r.getId());
                        searchResultVideo.add(rvideo);
                    }
                    if (r.getType().equals("IMAGE")) {
                        SearchImageResult rimg = new SearchImageResult();
                        rimg.setTitle(ris.getString("title"));
                        if (ris.has("height"))
                            rimg.setHeight(ris.getInt("height"));
                        if (ris.has("width"))
                            rimg.setWidth(ris.getInt("width"));
                        if (ris.has("url"))
                            rimg.setUrl(ris.getString("url"));
                        searchResultImg.add(rimg);
                    }
                }
                searchResult1 = new ArrayList<SearchResult>(searchResultWeb);
                ArrayList<SearchResult> toremove = new ArrayList<SearchResult>();
                for (SearchResult res : searchResult1) {
                    for (String exc : exclude1)
                        if (res.getUrl().contains(exc))
                            toremove.add(res);
                }
                for (SearchResult sr : toremove)
                    searchResult1.remove(sr);

                searchResult2 = new ArrayList<SearchResult>(searchResultVideo);
                toremove = new ArrayList<SearchResult>();
                for (SearchResult res : searchResult2) {
                    for (String exc : exclude2)
                        if (res.getUrl().contains(exc))
                            toremove.add(res);
                }
                for (SearchResult sr : toremove)
                    searchResult2.remove(sr);

                searchResult3 = new ArrayList<SearchResult>(searchResultImg);
                toremove = new ArrayList<SearchResult>();
                for (SearchResult res : searchResult3) {
                    for (String exc : exclude3)
                        if (res.getUrl().contains(exc))
                            toremove.add(res);
                }
                for (SearchResult sr : toremove)
                    searchResult3.remove(sr);

                StatsManager sm = new StatsManager();
                List<YData> Llist = sm.getMatcthTable(sm.getLangSites(searchResult1, null, null));

                searchLangDataPie1 = "var langdata = [ ";
                List<String> datastring = new ArrayList<String>();
                for (YData a : Llist) {
                    datastring.add("{ label: \"" + a.getSite() + "\", data: " + a.getQty() + "} ");
                }
                searchLangDataPie1 += Joiner.on(",").join(datastring);
                searchLangDataPie1 += " ]; ";
                searchLangDataPie1 += "$.plot($(\"#chartlangpie1\"), langdata, options ); \n";
                String hoverL = " $(\"#chartlangpie1\").bind(\"plothover\", function(event, pos, obj){ if (!obj){return;} percent = parseFloat(obj.series.percent).toFixed(2); var html = []; html.push(\"<div style=\\\"flot:left;width:105px;height:20px;text-align:center;border:0px solid black; \\\">\", \"<span style=\\\"font-weight:bold;color:red\\\">\", obj.series.label, \" (\", percent, \"%)</span>\", \"</div>\"); $(\"#showInteractive1L\").html(html.join('')); }); ";
                searchLangDataPie1 += hoverL;
                String plotclickL = " $(\"#chartlangpie1\").bind(\"plotclick\", function(event, pos, obj){ if (!obj){return;} }); ";
                searchLangDataPie1 += plotclickL;
                searchLangDataPie1 += " var choiceContainerL = $(\"#chartlangpie1\");";
                searchLangDataPie1 += " choiceContainerL.find(\"input\").click(plotAccordingToChoicesL);";
                searchLangDataPie1 += " function plotAccordingToChoicesL() { ";
                searchLangDataPie1 += " var key = $(this).attr(\"name\"); ";
                searchLangDataPie1 += " $( \"input[value*='\"+key+\"']\" ).trigger('click'); ";
                searchLangDataPie1 += " }";
                searchLangDataPie1 += "  ";
                alignSiteDomain();

                this.resultId = "0";
            } catch (JSONException e) {
                e.printStackTrace();
            }

        }
        // return "basicSearch";
    }

    public void openStoryboard() {
        StoryboardDao sbd = new StoryboardDao();
        storyboard = sbd.getStoryboardById(Long.parseLong(storyboardsel));
        storybname = storyboard.getNome();
        // storyboardlist = new ArrayList<StoryboardItem>();
        for (StoryboardItem sbi : storyboard.getStoryboardItem()) {
            /*StoryboardItem sblocal=new StoryboardItem();
            sblocal.setTitle(sbi.getTitle());
            sblocal.setContent(sbi.getContent());
            sblocal.setType(sbi.getType());
            sblocal.setWebcontent(sbi.getWebcontent());
            sblocal.setComment(sbi.getComment());
            sblocal.setId(Long.parseLong(""+newstoryboardlist.size())); */
            sbi.setPos(Long.parseLong("" + newstoryboardlist.size()));
            newstoryboardlist.add(sbi);
        }
        storyboardlist = newstoryboardlist;

        TrackDao td = new TrackDao();
        Track track = new Track();
        Calendar c = new GregorianCalendar();
        track.setDate(c.getTime());
        track.setOperation("open_storyboard");
        track.setParam1(this.storybname);
        track.setUtente(this.user.getUtente());
        td.addTrack(track);
    }

    public void saveNewSearch() {
        r = null;
        RicercaDao rd = new RicercaDao();
        while (rd.getRicercaByName(this.name) != null) {
            this.name = this.name + "_copy";
        }
        saveSearch();
    }

    public void saveNewStoryboard() {
        this.storyboard = null;
        StoryboardDao sbd = new StoryboardDao();
        while (sbd.getStoryboardByName(this.storybname) != null) {
            this.storybname = this.storybname + "_copy";
        }

        List<StoryboardItem> clone = new ArrayList<StoryboardItem>(storyboardlist.size());
        for (StoryboardItem item : storyboardlist)
            clone.add(item.clone());

        storyboardlist.clear();
        storyboardlist = clone;

        saveStoryboard();
    }

    public void saveStoryboard() {
        if (storyboard == null)
            storyboard = new Storyboard();
        storyboard.setNome(this.storybname);
        for (StoryboardItem sbi : this.storyboardlist) {
            // sbi.setId(null);
            sbi.setStoryboard(storyboard);
        }
        storyboard.setStoryboardItem(this.storyboardlist);
        storyboard.setUtente(this.user.getUtente());
        storyboard.setData((new GregorianCalendar()).getTime());
        StoryboardDao rd = new StoryboardDao();
        rd.addStoryboard(storyboard);
        TrackDao td = new TrackDao();
        Track track = new Track();
        Calendar c = new GregorianCalendar();
        track.setDate(c.getTime());
        track.setOperation("save_storyboard");
        track.setParam1(this.storybname);
        track.setUtente(this.user.getUtente());
        td.addTrack(track);

    }

    public void saveSearch() {
        if (r == null)
            r = new Ricerca();

        r.setData((new GregorianCalendar()).getTime());
        r.setNome(this.name);
        r.setUtente(this.user.getUtente());

        try {
            TrackDao td = new TrackDao();
            Track track = new Track();
            Calendar c = new GregorianCalendar();
            track.setDate(c.getTime());
            track.setOperation("save_search");
            track.setParam1(this.name);
            track.setUtente(this.user.getUtente());
            td.addTrack(track);

            JSONObject avList = new JSONObject();
            avList.put("siteAvailablelist1", this.siteAvailablelist1);
            avList.put("siteAvailablelist2", this.siteAvailablelist2);
            avList.put("siteAvailablelist3", this.siteAvailablelist3);
            r.setSiteAvailablelists(avList.toString());

            JSONObject pieList = new JSONObject();
            pieList.put("searchDataPie1", this.searchDataPie1);
            pieList.put("searchDataPie2", this.searchDataPie2);
            pieList.put("searchDataPie3", this.searchDataPie3);
            r.setSearchDataPies(pieList.toString());

            JSONObject pieWList = new JSONObject();
            pieWList.put("searchWeightedPie1", this.searchWeightedDataPie1);
            r.setSearchWeightedDataPies(pieWList.toString());

            JSONObject pieDList = new JSONObject();
            pieDList.put("searchDomainPie1", this.searchLangDataPie1);
            r.setSearchDomainDataPies(pieDList.toString());

            JSONObject selList = new JSONObject();
            selList.put("siteSelectedlist1", this.siteSelectedlist1);
            selList.put("siteSelectedlist2", this.siteSelectedlist2);
            selList.put("siteSelectedlist3", this.siteSelectedlist3);
            r.setSiteSelectedlists(selList.toString());

            JSONObject termList = new JSONObject();
            termList.put("searchTerms", this.searchterms);
            r.setSearchterms(termList.toString());
            List<Risultati> rislist = new ArrayList<Risultati>();
            for (SearchResult sr : searchResultWeb) {
                Risultati ris = new Risultati();
                JSONObject risultato = new JSONObject(sr);
                ris.setRicerca(r);
                ris.setRisultato(risultato.toString());
                ris.setType("WEB");
                rislist.add(ris);
            }
            for (SearchResult sr : searchResultVideo) {
                Risultati ris = new Risultati();
                JSONObject risultato = new JSONObject(sr);
                ris.setRicerca(r);
                ris.setRisultato(risultato.toString());
                ris.setType("VIDEO");
                rislist.add(ris);
            }
            for (SearchResult sr : searchResultImg) {
                Risultati ris = new Risultati();
                JSONObject risultato = new JSONObject(sr);
                ris.setRicerca(r);
                ris.setRisultato(risultato.toString());
                ris.setType("IMAGE");
                rislist.add(ris);
            }
            r.setRisultati(rislist);
        } catch (JSONException e) {
            e.printStackTrace();
        }

        RicercaDao rd = new RicercaDao();
        rd.addRicerca(r);
    }

    private boolean chechAny(List<String> lista, String word) {
        boolean check = false;
        for (String s : lista) {
            if (s.compareTo(word) == 0) {
                return true;
            }
        }
        return check;
    }

    public String getTimeline() {
        return this.timeline;
    }

    public String calculateTimeline(ArrayList<SearchResult> searchResult) {
        List<String> urlAnalyzed = new ArrayList<String>();
        Date dinizio = new Date();
        Timeline timeline1 = new Timeline();
        timeline1.setHeadline("Starting");
        timeline1.setType("default");
        timeline1.setStartDate("2009,1");
        timeline1.setText("Starting Point");
        Asset a = new Asset();
        a.setMedia("aaa");
        a.setCredit("");
        a.setCaption("");
        timeline1.setAsset(a);

        timeline1.setDate(new ArrayList<de.unihannover.l3s.mws.model.timeline.Date>());
        // if (this.searchResult!=null)
        for (SearchResult sr : searchResult) {
            System.out.println(sr.getUrl());
            if (sr.getUrl().contains("wikipedia") || sr.getUrl().contains("youtube")
                    || sr.getUrl().contains("slideshare") || sr.getUrl().contains("flickr")) {
                de.unihannover.l3s.mws.model.timeline.Date date2 = new de.unihannover.l3s.mws.model.timeline.Date();
                int year = 2009 + (int) (Math.random() * ((2013 - 2009) + 1));
                int month = 1 + (int) (Math.random() * ((12 - 1) + 1));
                date2.setStartDate(year + "," + month);
                date2.setHeadline(sr.getUrl().replace(".", " ").replace("-", " ").replace(",", "").replace("_", " ")
                        .replace("?", "").replace("=", " "));
                date2.setText("");
                Asset a2 = new Asset();
                a2.setCaption("");
                a2.setCredit("");

                if (sr.getUrl().contains("wikipedia")) {
                    if (!chechAny(urlAnalyzed, sr.getUrl())) {
                        urlAnalyzed.add(sr.getUrl());
                        SimpleDateFormat FORMATTER = new SimpleDateFormat("yyyy,MM");
                        Date d = DateManager.getWikipediaDate(sr.getUrl());
                        if (d != null) {
                            String data1 = FORMATTER.format(d);
                            date2.setStartDate(data1);
                            date2.setAsset(a2);

                            Calendar cal = Calendar.getInstance();
                            cal.setTime(d);
                            cal.add(Calendar.MONTH, -2);

                            if (dinizio.compareTo(cal.getTime()) > 0) {
                                dinizio = cal.getTime();
                                timeline1.setStartDate(FORMATTER.format(dinizio));
                            }

                            a2.setMedia(
                                    "http://localhost:8080/mwsace2/javax.faces.resource/img/icon/icon-wikipedia.png.jsf?ln=timeline");
                            timeline1.getDate().add(date2);
                        }
                    }
                } else if (sr.getUrl().contains("youtube")) {
                    if (!chechAny(urlAnalyzed, sr.getUrl())) {
                        urlAnalyzed.add(sr.getUrl());
                        SimpleDateFormat FORMATTER = new SimpleDateFormat("yyyy,MM");
                        Date d = DateManager.getYoutubeDate(sr.getUrl());
                        if (d != null) {
                            String data1 = FORMATTER.format(d);

                            date2.setStartDate(data1);
                            date2.setAsset(a2);

                            Calendar cal = Calendar.getInstance();
                            cal.setTime(d);
                            cal.add(Calendar.MONTH, -2);

                            if (dinizio.compareTo(cal.getTime()) > 0) {
                                dinizio = cal.getTime();
                                timeline1.setStartDate(FORMATTER.format(dinizio));
                            }

                            a2.setMedia(
                                    "http://localhost:8080/mwsace2/javax.faces.resource/img/icon/y_icon.png.jsf?ln=timeline");
                            timeline1.getDate().add(date2);
                        }
                    }
                } else if (sr.getUrl().contains("slideshare")) {
                    if (!chechAny(urlAnalyzed, sr.getUrl()) && sr.getUrl().startsWith("http://www.slideshare.net/")
                            && sr.getUrl().compareTo("http://www.slideshare.net/") != 0
                            && !sr.getUrl().contains("www.slideshare.net/login")) {
                        urlAnalyzed.add(sr.getUrl());
                        SimpleDateFormat FORMATTER = new SimpleDateFormat("yyyy,MM");
                        Date d = DateManager.getSlideshareDate(sr.getUrl());
                        if (d != null) {
                            String data1 = FORMATTER.format(d);

                            date2.setStartDate(data1);
                            date2.setAsset(a2);

                            Calendar cal = Calendar.getInstance();
                            cal.setTime(d);
                            cal.add(Calendar.MONTH, -2);

                            if (dinizio.compareTo(cal.getTime()) > 0) {
                                dinizio = cal.getTime();
                                timeline1.setStartDate(FORMATTER.format(dinizio));
                            }

                            a2.setMedia(
                                    "http://localhost:8080/mwsace2/javax.faces.resource/img/icon/slideshare-icon.png.jsf?ln=timeline");
                            timeline1.getDate().add(date2);
                        }
                    }
                } else if (sr.getUrl().contains("flickr")) {
                    a2.setMedia(
                            "http://localhost:8080/mwsace2/javax.faces.resource/img/icon/flickr-icon.png.jsf?ln=timeline");
                    date2.setAsset(a2);
                    timeline1.getDate().add(date2);
                }

            }
        }
        //else
        //   System.out.println("SR NULL");
        /* de.unihannover.l3s.mws.model.timeline.Date date1=new de.unihannover.l3s.mws.model.timeline.Date();
        date1.setStartDate("2009,2");
        date1.setHeadline("My first experiment in time-lapse photography");
        date1.setText("Nature at its finest in this video.");
        Asset a1=new Asset();
        a1.setMedia("");
        a1.setCaption("");
        a1.setCredit("");
        date1.setAsset(a1);
        timeline1.getDate().add(date1); */

        WholeTimeline wl = new WholeTimeline();
        wl.setTimeline(timeline1);
        if (this.searchResult1 != null) {
            timeline = (new JSONObject(wl)).toString();
            // timeline=" var timeline = new VMM.Timeline(); timeline.init('"+timeline+"'); ";
            timeline = " $(\"#timeline\").empty(); var timeline = new VMM.Timeline(); timeline.init('" + timeline
                    + "'); ";
        } else
            timeline = "";

        System.out.println(timeline);
        return timeline;
    }

    public void setTimeline(String timeline) {
        this.timeline = timeline;
    }

    /* public String getSearchDataPie() {
       return searchDataPie;
    }
        
    public void setSearchDataPie(String searchDataPie) {
       this.searchDataPie = searchDataPie;
    } */

    /* public String getSearchtext() {
       return searchtext;
    }
        
    public void setSearchtext(String searchtext) {
       this.searchtext = searchtext;
    } */

    public String getSearchtype() {
        return searchtype;
    }

    public void setSearchtype(String searchtype) {
        this.searchtype = searchtype;
    }

    /* public ArrayList<SearchResult> getSearchResult() {
       return searchResult;
    }
        
    public void setSearchResult(ArrayList<SearchResult> searchResult) {
       this.searchResult = searchResult;
    } */

    public ArrayList<String> getSearchtypelist() {
        if (searchtypelist == null) {
            searchtypelist = new ArrayList<String>();
            searchtypelist.add("Web");
            searchtypelist.add("Image");
            searchtypelist.add("Video");
        }
        return searchtypelist;
    }

    public void setSearchtypelist(ArrayList<String> searchtypelist) {
        this.searchtypelist = searchtypelist;
    }

    private String getTldString(String urlString) {
        URL url = null;
        String tldString = null;
        try {
            url = new URL(urlString);
            String[] domainNameParts = url.getHost().split("\\.");
            tldString = domainNameParts[domainNameParts.length - 1];
        } catch (MalformedURLException e) {
        }

        return tldString;
    }

    public void refineWebSearch(Type type) {
        System.out.println("TYPE: REFINE Web ");

        //String accountKey = "BmbX+6Sy9/VEcS5oOjurccO5MQpKr2ewvLQ2vRHBKXQ";
        // TextManager tmgr=new TextManager();

        searchterms.removeAll(Collections.singleton(""));
        String q = "";
        for (String t : this.searchterms) {
            q += "\"" + t + "\" ";
        }

        if (type == Type.REFINE_DOMAIN_PIE) {
            List<String> excludedomain = new ArrayList<String>(siteAvailableDomainlist1);
            excludedomain.removeAll(siteSelectedDomainlist1);
            List<String> excludelist = new ArrayList<String>();
            for (String s : siteSelectedlist1)
                if (excludedomain.contains(getTldString("http://" + s)))
                    excludelist.add(s);

            List<String> includelist = new ArrayList<String>();
            for (String s : siteAvailablelist1)
                if (!excludedomain.contains(getTldString("http://" + s)))
                    includelist.add(s);

            siteSelectedlist1.removeAll(excludelist);
            siteSelectedlist1.addAll(includelist);
        }

        List<String> exclude = new ArrayList<String>(siteAvailablelist1);
        exclude.removeAll(siteSelectedlist1);
        exclude.addAll(excludeWeb);

        for (String s : exclude)
            q += " -site:" + s + " ";

        System.out.println(q);
        Track track = new Track();
        track.setDate((new GregorianCalendar()).getTime());
        track.setOperation("search");
        track.setParam1(q);
        track.setParam2(type.name());
        track.setParam3("1");
        track.setUtente(this.user.getUtente());
        TrackDao td = new TrackDao();
        td.addTrack(track);

        List<SearchResult> toremove = new ArrayList<SearchResult>();
        searchResult1 = new ArrayList<SearchResult>(searchResultWeb);
        for (SearchResult res : searchResult1) {
            for (String exc : exclude)
                if (res.getUrl().contains(exc)) { // || excludedomain.contains(this.getTldString(res.getUrl()))){
                    System.out.println("removing " + exc);
                    toremove.add(res);
                }
        }

        for (SearchResult sr : toremove) {
            searchResult1.remove(sr);
        }

        if (searchterms.size() == 0)
            searchterms.add("");

        // PIE WEB
        StatsManager sm = new StatsManager();
        List<YData> list = sm.getMatcthTable(sm.getSites(searchResult1, null, null));
        searchDataPie1 = "var data = [ ";
        List<String> datastring = new ArrayList<String>();
        for (YData a : list) {
            datastring.add("{ label: \"" + a.getSite() + "\", data: " + a.getQty() + "} ");
        }
        searchDataPie1 += Joiner.on(",").join(datastring);
        searchDataPie1 += " ]; ";
        searchDataPie1 += " var options = { series: { pie: {show: true, label: {show: false} }  }, grid: { hoverable: true, clickable: true }, legend: {show: false} }; ";
        searchDataPie1 += "$.plot($(\"#chartpie1\"), data, options ); \n";
        String hover = " $(\"#chartpie1\").bind(\"plothover\", function(event, pos, obj){ if (!obj){return;} percent = parseFloat(obj.series.percent).toFixed(2); var html = []; html.push(\"<div style=\\\"flot:left;width:105px;height:20px;text-align:center;border:0px solid black;background-color:\", obj.series.color, \"\\\">\", \"<span style=\\\"font-weight:bold;color:red\\\">\", obj.series.label, \" (\", percent, \"%)</span>\", \"</div>\"); $(\"#showInteractive\").html(html.join('')); }); ";
        hover = " $(\"#chartpie1\").bind(\"plothover\", function(event, pos, obj){ if (!obj){return;} percent = parseFloat(obj.series.percent).toFixed(2); var html = []; html.push(\"<div style=\\\"flot:left;width:105px;height:20px;text-align:center;border:0px solid black; \\\">\", \"<span style=\\\"font-weight:bold;color:red\\\">\", obj.series.label, \" (\", percent, \"%)</span>\", \"</div>\"); $(\"#showInteractive\").html(html.join('')); }); ";
        searchDataPie1 += hover;
        searchDataPie1 += " var choiceContainer = $(\"#chartpie1\");";
        searchDataPie1 += " choiceContainer.find(\"input\").click(plotAccordingToChoices);";
        searchDataPie1 += " function plotAccordingToChoices() { ";
        searchDataPie1 += " var key = $(this).attr(\"name\"); ";
        searchDataPie1 += " $( \"input[value*='\"+key+\"']\" ).trigger('click'); ";
        searchDataPie1 += " }";
        searchDataPie1 += "  ";
        // return "basicSearch";

        List<YData> wlist = sm.getMatcthWeightedTable(sm.getSites(searchResult1, null, null));
        searchWeightedDataPie1 = "var weighteddata = [ ";
        datastring = new ArrayList<String>();
        for (YData a : wlist) {
            datastring.add("{ label: \"" + a.getSite() + "\", data: " + a.getQty() + "} ");
        }
        searchWeightedDataPie1 += Joiner.on(",").join(datastring);
        searchWeightedDataPie1 += " ]; ";
        searchWeightedDataPie1 += "$.plot($(\"#chartweightedpie1\"), weighteddata, options ); \n";
        String hoverW = " $(\"#chartweightedpie1\").bind(\"plothover\", function(event, pos, obj){ if (!obj){return;} percent = parseFloat(obj.series.percent).toFixed(2); var html = []; html.push(\"<div style=\\\"flot:left;width:105px;height:20px;text-align:center;border:0px solid black; \\\">\", \"<span style=\\\"font-weight:bold;color:red\\\">\", obj.series.label, \" (\", percent, \"%)</span>\", \"</div>\"); $(\"#showInteractive1W\").html(html.join('')); }); ";
        searchWeightedDataPie1 += hoverW;
        searchWeightedDataPie1 += " var choiceContainerW = $(\"#chartweightedpie1\");";
        searchWeightedDataPie1 += " choiceContainerW.find(\"input\").click(plotAccordingToChoicesW);";
        searchWeightedDataPie1 += " function plotAccordingToChoicesW() { ";
        searchWeightedDataPie1 += " var key = $(this).attr(\"name\"); ";
        searchWeightedDataPie1 += " $( \"input[value*='\"+key+\"']\" ).trigger('click'); ";
        searchWeightedDataPie1 += " }";
        searchWeightedDataPie1 += "  ";

        List<YData> Llist = sm.getMatcthTable(sm.getLangSites(searchResult1, null, null));
        searchLangDataPie1 = "var langdata = [ ";
        datastring = new ArrayList<String>();
        for (YData a : Llist) {
            datastring.add("{ label: \"" + a.getSite() + "\", data: " + a.getQty() + "} ");
        }
        searchLangDataPie1 += Joiner.on(",").join(datastring);
        searchLangDataPie1 += " ]; ";
        searchLangDataPie1 += "$.plot($(\"#chartlangpie1\"), langdata, options ); \n";
        String hoverL = " $(\"#chartlangpie1\").bind(\"plothover\", function(event, pos, obj){ if (!obj){return;} percent = parseFloat(obj.series.percent).toFixed(2); var html = []; html.push(\"<div style=\\\"flot:left;width:105px;height:20px;text-align:center;border:0px solid black; \\\">\", \"<span style=\\\"font-weight:bold;color:red\\\">\", obj.series.label, \" (\", percent, \"%)</span>\", \"</div>\"); $(\"#showInteractive1L\").html(html.join('')); }); ";
        searchLangDataPie1 += hoverL;
        searchLangDataPie1 += " var choiceContainerL = $(\"#chartlangpie1\");";
        searchLangDataPie1 += " choiceContainerL.find(\"input\").click(plotAccordingToChoicesL);";
        searchLangDataPie1 += " function plotAccordingToChoicesL() { ";
        searchLangDataPie1 += " var key = $(this).attr(\"name\"); ";
        searchLangDataPie1 += " $( \"input[value*='\"+key+\"']\" ).trigger('click'); ";
        searchLangDataPie1 += " }";
        searchLangDataPie1 += "  ";

        alignSiteDomain();
    }

    public String refineImgSearch() {
        // System.out.println("TYPE: REFINE IMG ");

        searchterms.removeAll(Collections.singleton(""));
        String q = "";
        for (String t : this.searchterms) {
            q += "\"" + t + "\" ";
        }

        List<String> exclude = new ArrayList<String>(siteAvailablelist3);
        exclude.removeAll(siteSelectedlist3);
        exclude.addAll(excludeImg);
        for (String s : exclude)
            q += " -site:" + s + " ";

        System.out.println(q);
        Track track = new Track();
        track.setDate((new GregorianCalendar()).getTime());
        track.setOperation("search");
        track.setParam1(q);
        track.setParam2("Refine IMG");
        track.setParam3("1");
        track.setUtente(this.user.getUtente());
        TrackDao td = new TrackDao();
        td.addTrack(track);

        List<SearchResult> toremove = new ArrayList<SearchResult>();
        searchResult3 = new ArrayList<SearchResult>(searchResultImg);
        for (SearchResult res : searchResult3) {
            for (String exc : exclude)
                if (res.getUrl().contains(exc)) {
                    // System.out.println("removing "+exc);
                    toremove.add(res);
                }
        }

        for (SearchResult sr : toremove) {
            searchResult3.remove(sr);
        }

        if (searchterms.size() == 0)
            searchterms.add("");
        // PIE IMAGE      
        StatsManager sm = new StatsManager();
        List<YData> list = sm.getMatcthTable(sm.getSites(searchResult3, null, null));
        searchDataPie3 = "var data = [ ";
        ArrayList<String> datastring = new ArrayList<String>();
        for (YData a : list) {
            datastring.add("{ label: \"" + a.getSite() + "\", data: " + a.getQty() + "} ");
        }
        searchDataPie3 += Joiner.on(",").join(datastring);
        searchDataPie3 += " ]; ";
        // searchDataPie3+=" var options = { series: { pie: {show: true, label: {show: false} }  }, grid: { hoverable: true, clickable: true }, legend: {show: false} }; ";
        searchDataPie3 += "$.plot($(\"#chartpie3\"), data, options ); \n";
        String hover = " $(\"#chartpie3\").bind(\"plothover\", function(event, pos, obj){ if (!obj){return;} percent = parseFloat(obj.series.percent).toFixed(2); var html = []; html.push(\"<div style=\\\"flot:left;width:105px;height:20px;text-align:center;border:0px solid black;background-color:\", obj.series.color, \"\\\">\", \"<span style=\\\"font-weight:bold;color:red\\\">\", obj.series.label, \" (\", percent, \"%)</span>\", \"</div>\"); $(\"#showInteractive\").html(html.join('')); }); ";
        hover = " $(\"#chartpie3\").bind(\"plothover\", function(event, pos, obj){ if (!obj){return;} percent = parseFloat(obj.series.percent).toFixed(2); var html = []; html.push(\"<div style=\\\"flot:left;width:105px;height:20px;text-align:center;border:0px solid black; \\\">\", \"<span style=\\\"font-weight:bold;color:red\\\">\", obj.series.label, \" (\", percent, \"%)</span>\", \"</div>\"); $(\"#showInteractive\").html(html.join('')); }); ";
        searchDataPie3 += hover;
        searchDataPie3 += " var choiceContainer3 = $(\"#chartpie3\");";
        searchDataPie3 += " choiceContainer3.find(\"input\").click(plotAccordingToChoices3);";
        searchDataPie3 += " function plotAccordingToChoices3() { ";
        searchDataPie3 += " var key = $(this).attr(\"name\"); ";
        searchDataPie3 += " $( \"input[value*='\"+key+\"']\" ).trigger('click'); ";
        searchDataPie3 += " }";
        searchDataPie3 += "  ";
        return "basicSearch";
    }

    public String refineVideoSearch() {

        // System.out.println("TYPE: REFINE Video nuovo: ");

        //String accountKey = "BmbX+6Sy9/VEcS5oOjurccO5MQpKr2ewvLQ2vRHBKXQ";
        // TextManager tmgr=new TextManager();

        searchterms.removeAll(Collections.singleton(""));
        String q = "";
        for (String t : this.searchterms) {
            q += "\"" + t + "\" ";
        }

        List<String> exclude = new ArrayList<String>(siteAvailablelist2);
        exclude.removeAll(siteSelectedlist2);
        exclude.addAll(excludeVid);
        for (String s : exclude)
            q += " -site:" + s + " ";

        System.out.println(q);
        Track track = new Track();
        track.setDate((new GregorianCalendar()).getTime());
        track.setOperation("search");
        track.setParam1(q);
        track.setParam2("Refine Video");
        track.setParam3("1");
        track.setUtente(this.user.getUtente());
        TrackDao td = new TrackDao();
        td.addTrack(track);

        List<SearchResult> toremove = new ArrayList<SearchResult>();
        searchResult2 = new ArrayList<SearchResult>(searchResultVideo);
        for (SearchResult res : searchResult2) {
            for (String exc : exclude)
                if (res.getUrl().contains(exc)) {
                    System.out.println("removing " + exc);
                    toremove.add(res);
                }
        }

        for (SearchResult sr : toremove) {
            searchResult2.remove(sr);
        }

        if (searchterms.size() == 0)
            searchterms.add("");
        // PIE VIDEO      
        StatsManager sm = new StatsManager();
        List<YData> list = sm.getMatcthTable(sm.getSites(searchResult2, null, null));
        searchDataPie2 = "var data = [ ";
        ArrayList<String> datastring = new ArrayList<String>();
        for (YData a : list) {
            datastring.add("{ label: \"" + a.getSite() + "\", data: " + a.getQty() + "} ");
            // siteAvailablelist2.add(a.getSite());
            // siteSelectedlist2.add(a.getSite());
        }
        searchDataPie2 += Joiner.on(",").join(datastring);
        searchDataPie2 += " ]; ";
        // searchDataPie2+=" var options = { series: { pie: {show: true, label: {show: false} }  }, grid: { hoverable: true, clickable: true }, legend: {show: false} }; ";
        searchDataPie2 += "$.plot($(\"#chartpie2\"), data, options ); \n";
        String hover = " $(\"#chartpie2\").bind(\"plothover\", function(event, pos, obj){ if (!obj){return;} percent = parseFloat(obj.series.percent).toFixed(2); var html = []; html.push(\"<div style=\\\"flot:left;width:105px;height:20px;text-align:center;border:0px solid black;background-color:\", obj.series.color, \"\\\">\", \"<span style=\\\"font-weight:bold;color:red\\\">\", obj.series.label, \" (\", percent, \"%)</span>\", \"</div>\"); $(\"#showInteractive\").html(html.join('')); }); ";
        hover = " $(\"#chartpie2\").bind(\"plothover\", function(event, pos, obj){ if (!obj){return;} percent = parseFloat(obj.series.percent).toFixed(2); var html = []; html.push(\"<div style=\\\"flot:left;width:105px;height:20px;text-align:center;border:0px solid black; \\\">\", \"<span style=\\\"font-weight:bold;color:red\\\">\", obj.series.label, \" (\", percent, \"%)</span>\", \"</div>\"); $(\"#showInteractive\").html(html.join('')); }); ";
        searchDataPie2 += hover;
        searchDataPie2 += " var choiceContainer2 = $(\"#chartpie2\");";
        searchDataPie2 += " choiceContainer2.find(\"input\").click(plotAccordingToChoices2);";
        searchDataPie2 += " function plotAccordingToChoices2() { ";
        searchDataPie2 += " var key = $(this).attr(\"name\"); ";
        searchDataPie2 += " $( \"input[value*='\"+key+\"']\" ).trigger('click'); ";
        searchDataPie2 += " }";
        searchDataPie2 += "  ";

        return "basicSearch";

    }

    public String searcAll(int nuovo) {

        // System.out.println("TYPE: ALL nuovo: "+nuovo);

        String accountKey = "BmbX+6Sy9/VEcS5oOjurccO5MQpKr2ewvLQ2vRHBKXQ";
        // accountKey = "TTtbr2RdFtN8bvzLZG9SIEgkDa7ecUDNrAkdwEy86UI"; // davide.taibi@libero.it
        TextManager tmgr = new TextManager();
        tmgr.setCotextrange(this.user.getUtente().getCotextrange());
        searchterms.removeAll(Collections.singleton(""));
        String q = "";
        for (String t : this.searchterms) {
            q += "\"" + t + "\" ";
        }

        if (nuovo == 1) {
            siteAvailablelist1.clear();
            siteAvailablelist2.clear();
            siteAvailablelist3.clear();
            siteSelectedlist1.clear();
            siteSelectedlist2.clear();
            siteSelectedlist3.clear();
        }

        if (!(this.user.getUtente().hasAllLoc()))
            for (Generalsettings gs : this.loclist)
                if (this.loclistsel.compareTo(gs.getId() + "") == 0)
                    q += " loc:" + locMap.get(gs.getValue());

        List<String> exclude = new ArrayList<String>(siteAvailablelist1);
        exclude.removeAll(siteSelectedlist1);
        exclude.addAll(excludeWeb);
        exclude.addAll(excludeImg);
        exclude.addAll(excludeVid);
        for (String s : exclude)
            q += " -site:" + s;

        if (!(this.user.getUtente().hasAllLang()))
            // for (String s : this.langlistsel)
            for (Generalsettings gs : this.langlist)
                if (this.langlistsel.compareTo(gs.getId() + "") == 0)
                    q += " language:" + gs.getValue() + " ";

        String qweb = "    ";
        for (SiteSetItem ssi : this.user.getUtente().getSitesetitem()) {
            qweb += " site:" + ssi.getUrl() + " OR ";
        }
        qweb = qweb.substring(0, qweb.length() - 4);
        if (qweb.trim().length() != 0)
            qweb = " (" + qweb + ") ";

        q = q + " " + qweb; // ADDED TO HAVE RESTRICTION ALSO ON VIDEOS AND IMAGES 
        qweb = "";
        System.out.println(q + " " + qweb);

        // if (this.searchtype.compareTo("Web")==0){
        AzureSearchWebQuery aq = new AzureSearchWebQuery();
        aq.setAppid(accountKey);
        aq.setQuery(q + " " + qweb);

        // aq.setQuery(q);
        // System.out.println(q);
        List<AzureSearchWebResult> arsall = new ArrayList<AzureSearchWebResult>();
        int conta = -1;
        int contaquery = 0;
        for (int i = 1; i <= 2 && conta != 0; i++) {
            contaquery++;
            aq.setPerPage(50);
            aq.setPage(i);
            aq.doQuery();

            AzureSearchResultSet<AzureSearchWebResult> ars = aq.getQueryResult();
            // System.out.println("TOTAL:"+ars.getWebTotal());
            if (ars.getAsrs().size() < 50)
                conta = 0;
            for (AzureSearchWebResult anr : ars) {
                arsall.add(anr);
            }
        }

        searchResultWeb = new ArrayList<SearchResult>();
        // WIKIMEDIA: http://en.wikipedia.org/w/api.php?action=query&titles=Berlin&prop=revisions&rvprop=timestamp&rvdir=newer&format=xml
        // LASTFM: http://ws.audioscrobbler.com/2.0/?method=artist.getshouts&artist=Berlin&api_key=9b6009eca365ded3a03c2b9673d54eb9&page=3
        List<String> ripetiz = new ArrayList<String>();
        for (AzureSearchWebResult anr : arsall) {

            SearchWebResult r = new SearchWebResult();
            r.setTitle(anr.getTitle());
            // r.setDescription(tmgr.SingleTextToCheck(this.searchterms.get(0), anr.getDescription(), 0));

            r.setDescription(tmgr.MultipleTextToCheck(this.searchterms, anr.getDescription(), 0));
            teasers.add(anr.getDescription());
            r.setUrl(anr.getUrl());
            if (!ripetiz.contains(r.getUrl())) {
                ripetiz.add(r.getUrl());
                searchResultWeb.add(r);
            }
        }
        searchResult1 = new ArrayList<SearchResult>(searchResultWeb);
        // }
        // if (this.searchtype.compareTo("Video")==0){
        AzureSearchVideoQuery aqv = new AzureSearchVideoQuery();
        aqv.setAppid(accountKey);
        aqv.setQuery(q);
        List<AzureSearchVideoResult> arsallv = new ArrayList<AzureSearchVideoResult>();
        conta = -1;
        for (int i = 1; i <= 2 && conta != 0; i++) {
            contaquery++;
            aqv.setPerPage(50);
            aqv.setPage(i);
            aqv.doQuery();
            AzureSearchResultSet<AzureSearchVideoResult> ars = aqv.getQueryResult();

            if (ars.getAsrs().size() < 50)
                conta = 0;
            for (AzureSearchVideoResult anr : ars) {
                // System.out.println("Page : "+i+" size ars: "+anr.getMediaUrl());
                arsallv.add(anr);
            }
        }
        // searchResult2=new ArrayList<SearchResult>();
        searchResultVideo = new ArrayList<SearchResult>();
        ripetiz = new ArrayList<String>();
        for (AzureSearchVideoResult anr : arsallv) {
            SearchVideoResult r = new SearchVideoResult();
            r.setTitle(anr.getTitle());
            // r.setHeight(anr.getThumbnail().getHeight());
            // r.setWidth(anr.getThumbnail().getWidth());
            r.setRuntime("" + anr.getRunTime());
            r.setThumbnail(anr.getThumbnail());
            r.setUrl(anr.getMediaUrl());
            // System.out.println(r.getUrl());
            if (!ripetiz.contains(r.getUrl())) {
                ripetiz.add(r.getUrl());
                searchResultVideo.add(r);
            }
        }
        searchResult2 = new ArrayList<SearchResult>(searchResultVideo);
        // }
        // if (this.searchtype.compareTo("Image")==0){
        AzureSearchImageQuery aqi = new AzureSearchImageQuery();
        aqi.setAppid(accountKey);
        aqi.setQuery(q);
        List<AzureSearchImageResult> arsalli = new ArrayList<AzureSearchImageResult>();
        conta = -1;
        for (int i = 1; i <= 2 && conta != 0; i++) {
            contaquery++;
            aqi.setPage(i);
            aqi.setPerPage(50);
            aqi.doQuery();
            AzureSearchResultSet<AzureSearchImageResult> ars = aqi.getQueryResult();
            if (ars.getAsrs().size() < 50)
                conta = 0;

            for (AzureSearchImageResult anr : ars) {
                arsalli.add(anr);
            }
        }
        searchResultImg = new ArrayList<SearchResult>();
        ripetiz = new ArrayList<String>();
        for (AzureSearchImageResult anr : arsalli) {
            SearchImageResult r = new SearchImageResult();
            r.setTitle(anr.getTitle());
            r.setHeight(anr.getHeight());
            r.setWidth(anr.getWidth());
            r.setUrl(anr.getMediaUrl());
            if (!ripetiz.contains(r.getUrl())) {
                ripetiz.add(r.getUrl());
                searchResultImg.add(r);
            }
        }
        searchResult3 = new ArrayList<SearchResult>(searchResultImg);
        // }

        Track track = new Track();
        track.setDate((new GregorianCalendar()).getTime());
        track.setOperation("search");
        track.setParam1(q + " " + qweb);
        track.setParam2(this.searchtype);
        track.setParam3("" + contaquery);
        track.setUtente(this.user.getUtente());
        TrackDao td = new TrackDao();
        td.addTrack(track);

        if (searchterms.size() == 0)
            searchterms.add("");

        // PIE WEB
        StatsManager sm = new StatsManager();
        List<YData> list = sm.getMatcthTable(sm.getSites(searchResult1, null, null));
        searchDataPie1 = "var data = [ ";
        List<String> datastring = new ArrayList<String>();
        for (YData a : list) {
            datastring.add("{ label: \"" + a.getSite() + "\", data: " + a.getQty() + "} ");
            if (nuovo == 1) {
                siteAvailablelist1.add(a.getSite());
                siteSelectedlist1.add(a.getSite());
            }
        }
        searchDataPie1 += Joiner.on(",").join(datastring);
        searchDataPie1 += " ]; ";
        searchDataPie1 += " var options = { series: { pie: {show: true, label: {show: false} }  }, grid: { hoverable: true, clickable: true }, legend: {show: false} }; ";
        searchDataPie1 += "$.plot($(\"#chartpie1\"), data, options ); \n";
        // String hover=" $(\"#chartpie1\").bind(\"plothover\", function(event, pos, obj){ if (!obj){return;} percent = parseFloat(obj.series.percent).toFixed(2); var html = []; html.push(\"<div style=\\\"flot:left;width:105px;height:20px;text-align:center;border:0px solid black;background-color:\", obj.series.color, \"\\\">\", \"<span style=\\\"font-weight:bold;color:red\\\">\", obj.series.label, \" (\", percent, \"%)</span>\", \"</div>\"); $(\"#showInteractive1\").html(html.join('')); }); ";
        String hover = " $(\"#chartpie1\").bind(\"plothover\", function(event, pos, obj){ if (!obj){return;} percent = parseFloat(obj.series.percent).toFixed(2); var html = []; html.push(\"<div style=\\\"flot:left;width:105px;height:20px;text-align:center;border:0px solid black; \\\">\", \"<span style=\\\"font-weight:bold;color:red\\\">\", obj.series.label, \" (\", percent, \"%)</span>\", \"</div>\"); $(\"#showInteractive1\").html(html.join('')); }); ";
        searchDataPie1 += hover;
        searchDataPie1 += " var choiceContainer = $(\"#chartpie1\");";
        searchDataPie1 += " choiceContainer.find(\"input\").click(plotAccordingToChoices);";
        searchDataPie1 += " function plotAccordingToChoices() { ";
        searchDataPie1 += " var key = $(this).attr(\"name\"); ";
        searchDataPie1 += " $( \"input[value*='\"+key+\"']\" ).trigger('click'); ";
        searchDataPie1 += " }";
        searchDataPie1 += "  ";
        // calculateTimeline(searchResult);

        // PIE WEIGHTED WEB

        List<YData> wlist = sm.getMatcthWeightedTable(sm.getSites(searchResult1, null, null));
        searchWeightedDataPie1 = "var weighteddata = [ ";
        datastring = new ArrayList<String>();
        for (YData a : wlist) {
            datastring.add("{ label: \"" + a.getSite() + "\", data: " + a.getQty() + "} ");
        }
        searchWeightedDataPie1 += Joiner.on(",").join(datastring);
        searchWeightedDataPie1 += " ]; ";
        searchWeightedDataPie1 += "$.plot($(\"#chartweightedpie1\"), weighteddata, options ); \n";
        String hoverW = " $(\"#chartweightedpie1\").bind(\"plothover\", function(event, pos, obj){ if (!obj){return;} percent = parseFloat(obj.series.percent).toFixed(2); var html = []; html.push(\"<div style=\\\"flot:left;width:105px;height:20px;text-align:center;border:0px solid black; \\\">\", \"<span style=\\\"font-weight:bold;color:red\\\">\", obj.series.label, \" (\", percent, \"%)</span>\", \"</div>\"); $(\"#showInteractive1W\").html(html.join('')); }); ";
        searchWeightedDataPie1 += hoverW;
        searchWeightedDataPie1 += " var choiceContainerW = $(\"#chartweightedpie1\");";
        searchWeightedDataPie1 += " choiceContainerW.find(\"input\").click(plotAccordingToChoicesW);";
        searchWeightedDataPie1 += " function plotAccordingToChoicesW() { ";
        searchWeightedDataPie1 += " var key = $(this).attr(\"name\"); ";
        searchWeightedDataPie1 += " $( \"input[value*='\"+key+\"']\" ).trigger('click'); ";
        searchWeightedDataPie1 += " }";
        searchWeightedDataPie1 += "  ";

        // PIE DOMAIN WEB

        List<YData> Llist = sm.getMatcthTable(sm.getLangSites(searchResult1, null, null));
        searchLangDataPie1 = "var langdata = [ ";
        datastring = new ArrayList<String>();
        for (YData a : Llist) {
            datastring.add("{ label: \"" + a.getSite() + "\", data: " + a.getQty() + "} ");
            /* if (nuovo==1) {
               siteAvailableDomainlist1.add(a.getSite());
               siteSelectedDomainlist1.add(a.getSite());
            } */
        }
        searchLangDataPie1 += Joiner.on(",").join(datastring);
        searchLangDataPie1 += " ]; ";
        searchLangDataPie1 += "$.plot($(\"#chartlangpie1\"), langdata, options ); \n";
        String hoverL = " $(\"#chartlangpie1\").bind(\"plothover\", function(event, pos, obj){ if (!obj){return;} percent = parseFloat(obj.series.percent).toFixed(2); var html = []; html.push(\"<div style=\\\"flot:left;width:105px;height:20px;text-align:center;border:0px solid black; \\\">\", \"<span style=\\\"font-weight:bold;color:red\\\">\", obj.series.label, \" (\", percent, \"%)</span>\", \"</div>\"); $(\"#showInteractive1L\").html(html.join('')); }); ";
        searchLangDataPie1 += hoverL;
        String plotclickL = " $(\"#chartlangpie1\").bind(\"plotclick\", function(event, pos, obj){ if (!obj){return;} }); ";
        searchLangDataPie1 += plotclickL;
        searchLangDataPie1 += " var choiceContainerL = $(\"#chartlangpie1\");";
        searchLangDataPie1 += " choiceContainerL.find(\"input\").click(plotAccordingToChoicesL);";
        searchLangDataPie1 += " function plotAccordingToChoicesL() { ";
        searchLangDataPie1 += " var key = $(this).attr(\"name\"); ";
        searchLangDataPie1 += " $( \"input[value*='\"+key+\"']\" ).trigger('click'); ";
        searchLangDataPie1 += " }";
        searchLangDataPie1 += "  ";
        alignSiteDomain();

        // BAR WEB
        searchDataBar1 = " var datawebbar = [ ";
        datastring = new ArrayList<String>();
        int conta2 = 0;
        for (YData a : list) {
            datastring.add("{ label: \"" + a.getSite() + "\", data: [ [" + conta2 + "," + a.getQty() + "] ]} ");
            conta2++;
        }
        searchDataBar1 += Joiner.on(",").join(datastring);
        searchDataBar1 += " ]; ";
        searchDataBar1 += " var baroptions = { series: { bars: {show: true, label: {show: false} }  }, grid: { hoverable: true, clickable: true }, legend: {show: false} }; ";
        searchDataBar1 += "$.plot($(\"#chartbar1\"), datawebbar, baroptions ); \n";
        searchDataBar1 += "  ";

        // PIE VIDEO      
        sm = new StatsManager();
        list = sm.getMatcthTable(sm.getSites(searchResult2, null, null));
        searchDataPie2 = "var data = [ ";
        datastring = new ArrayList<String>();
        for (YData a : list) {
            datastring.add("{ label: \"" + a.getSite() + "\", data: " + a.getQty() + "} ");
            if (nuovo == 1) {
                siteAvailablelist2.add(a.getSite());
                siteSelectedlist2.add(a.getSite());
            }
        }
        searchDataPie2 += Joiner.on(",").join(datastring);
        searchDataPie2 += " ]; ";
        // searchDataPie2+=" var options = { series: { pie: {show: true, label: {show: false} }  }, grid: { hoverable: true, clickable: true }, legend: {show: false} }; ";
        searchDataPie2 += "$.plot($(\"#chartpie2\"), data, options ); \n";
        // hover=" $(\"#chartpie2\").bind(\"plothover\", function(event, pos, obj){ if (!obj){return;} percent = parseFloat(obj.series.percent).toFixed(2); var html = []; html.push(\"<div style=\\\"flot:left;width:105px;height:20px;text-align:center;border:0px solid black;background-color:\", obj.series.color, \"\\\">\", \"<span style=\\\"font-weight:bold;color:red\\\">\", obj.series.label, \" (\", percent, \"%)</span>\", \"</div>\"); $(\"#showInteractive2\").html(html.join('')); }); ";
        hover = " $(\"#chartpie2\").bind(\"plothover\", function(event, pos, obj){ if (!obj){return;} percent = parseFloat(obj.series.percent).toFixed(2); var html = []; html.push(\"<div style=\\\"flot:left;width:105px;height:20px;text-align:center;border:0px solid black; \\\">\", \"<span style=\\\"font-weight:bold;color:red\\\">\", obj.series.label, \" (\", percent, \"%)</span>\", \"</div>\"); $(\"#showInteractive2\").html(html.join('')); }); ";
        searchDataPie2 += hover;
        searchDataPie2 += " var choiceContainer2 = $(\"#chartpie2\");";
        searchDataPie2 += " choiceContainer2.find(\"input\").click(plotAccordingToChoices2);";
        searchDataPie2 += " function plotAccordingToChoices2() { ";
        searchDataPie2 += " var key = $(this).attr(\"name\"); ";
        searchDataPie2 += " $( \"input[value*='\"+key+\"']\" ).trigger('click'); ";
        searchDataPie2 += " }";
        searchDataPie2 += "  ";

        // PIE IMAGE      
        sm = new StatsManager();
        list = sm.getMatcthTable(sm.getSites(searchResult3, null, null));
        searchDataPie3 = "var data = [ ";
        datastring = new ArrayList<String>();
        for (YData a : list) {
            datastring.add("{ label: \"" + a.getSite() + "\", data: " + a.getQty() + "} ");
            if (nuovo == 1) {
                siteAvailablelist3.add(a.getSite());
                siteSelectedlist3.add(a.getSite());
            }
        }
        searchDataPie3 += Joiner.on(",").join(datastring);
        searchDataPie3 += " ]; ";
        // searchDataPie3+=" var options = { series: { pie: {show: true, label: {show: false} }  }, grid: { hoverable: true, clickable: true }, legend: {show: false} }; ";
        searchDataPie3 += "$.plot($(\"#chartpie3\"), data, options ); \n";
        // hover=" $(\"#chartpie3\").bind(\"plothover\", function(event, pos, obj){ if (!obj){return;} percent = parseFloat(obj.series.percent).toFixed(2); var html = []; html.push(\"<div style=\\\"flot:left;width:105px;height:20px;text-align:center;border:0px solid black;background-color:\", obj.series.color, \"\\\">\", \"<span style=\\\"font-weight:bold;color:red\\\">\", obj.series.label, \" (\", percent, \"%)</span>\", \"</div>\"); $(\"#showInteractive3\").html(html.join('')); }); ";
        hover = " $(\"#chartpie3\").bind(\"plothover\", function(event, pos, obj){ if (!obj){return;} percent = parseFloat(obj.series.percent).toFixed(2); var html = []; html.push(\"<div style=\\\"flot:left;width:105px;height:20px;text-align:center;border:0px solid black; \\\">\", \"<span style=\\\"font-weight:bold;color:red\\\">\", obj.series.label, \" (\", percent, \"%)</span>\", \"</div>\"); $(\"#showInteractive3\").html(html.join('')); }); ";
        searchDataPie3 += hover;
        searchDataPie3 += " var choiceContainer3 = $(\"#chartpie3\");";
        searchDataPie3 += " choiceContainer3.find(\"input\").click(plotAccordingToChoices3);";
        searchDataPie3 += " function plotAccordingToChoices3() { ";
        searchDataPie3 += " var key = $(this).attr(\"name\"); ";
        searchDataPie3 += " $( \"input[value*='\"+key+\"']\" ).trigger('click'); ";
        searchDataPie3 += " }";
        searchDataPie3 += "  ";
        // System.out.println("IMAGES: "+searchResult3.size());

        return "basicSearch";

    }

}