SyncDirWriterService.java

package sk.iway.iwcm.stripes;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sourceforge.stripes.action.ActionBeanContext;
import sk.iway.iwcm.Tools;
import sk.iway.iwcm.i18n.Prop;
import sk.iway.iwcm.sync.inport.Numbered;

public class SyncDirWriterService {

	// Private constructor to hide the implicit public one
	private SyncDirWriterService() {}
    
	/**
	 * Prepare progress div (via writter), where wi will updating the value (progress)
	 * @param headlineText
	 * @param valueFieldId
	 * @param valueFieldText
	 * @param writer
	 */
    public static void prepareProgress(String headlineText, String valueFieldId, String valueFieldText, PrintWriter writer) { 
		prepareProgress(headlineText, valueFieldId, valueFieldText, "", writer);
	}

	/**
	 * Prepare progress div (via writter), where wi will updating the value (progress)
	 * @param headlineText
	 * @param valueFieldId
	 * @param valueFieldText
	 * @param addClass - specific class to be add to main div
	 * @param writer
	 */
    public static void prepareProgress(String headlineText, String valueFieldId, String valueFieldText, String addClass, PrintWriter writer) {
		if(addClass == null) addClass = "";
		writer.println("<div class='padding10 " + addClass + "'>");
		writer.println("<b>" + headlineText + "</b>");
		writer.println("<p id='" + valueFieldId + "'>" + valueFieldText + "</p>");
		writer.println("</div>");
		writer.flush();
	}

	/**
	 * Update progress value craeted by method {@link #prepareProgress(String, String, String, PrintWriter)}
	 * @param valueFieldId
	 * @param valueFieldText
	 * @param writer
	 */
	public static void updateProgress(String valueFieldId, String valueFieldText, PrintWriter writer) {
		writer.write("<script language='javascript'> $('p#" + valueFieldId + "').text('" + valueFieldText + "'); </script>");
		writer.flush();
	}

	/**
	 * Count how many item datas are in selected
	 * @param <E>
	 * @param selected
	 * @param datas
	 * @param prefix
	 * @return
	 */
	public static <E> int getCountToHandle(Map<String, String> selected, Iterable<Numbered<E>> datas, String prefix) {
		int count = 0;
		for (Numbered<E> remoteFile : datas) {
			if (selected.get(prefix + remoteFile.number) != null) { count++; }
		}
		return count;
	}

	/**
	 * Print status message via writer
	 * @param textKey
	 * @param mainTitle
	 * @param context
	 * @param request
	 */
	public static void printStatusMsg(String textKey, boolean mainTitle, ActionBeanContext context, HttpServletRequest request) {
		try {
			HttpServletResponse response = context.getResponse();
        	PrintWriter writer = response.getWriter();
			writer.println("<div class='statusMsg'>");
			
			if(mainTitle)
				writer.println("<h3>" + Prop.getInstance(request).getText(textKey)+"</h3>");
			else
				writer.println("<b>" + Prop.getInstance(request).getText(textKey)+"</b>");
			
			writer.println("</div>");
			writer.flush();
		} catch (IOException e) {
			sk.iway.iwcm.Logger.error(e);
		}
	}

	public static Map<String, String> getOptionsMap(String prefix, HttpServletRequest request) {
		Map<String, String> optionsMap = new HashMap<>();

		String[] selected = Tools.getTokens(request.getParameter(prefix + "options"), ",");
		if(selected.length < 1) return optionsMap;
		for (String el : selected) { optionsMap.put(el, el); }

		return optionsMap;
	}
}