text:
package com.iss.gms.web.action.emp;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.apache.struts.validator.LazyValidatorForm;

import com.iss.gms.entity.EmpRelChangeRecord;
import com.iss.gms.entity.EmpRelStaInfo;
import com.iss.gms.entity.EmployeeBasicInfo;
import com.iss.gms.entity.EmployeeDimissionInfo;
import com.iss.gms.entity.EmployeeHoursDetailInfo;
import com.iss.gms.entity.EmployeeRelegationInfo;
import com.iss.gms.entity.ProjectInfo;
import com.iss.gms.service.HoursWorkService;
import com.iss.gms.service.IEmployeeService;
import com.iss.gms.service.IProjectService;
import com.iss.gms.utils.GmsUtils;

public class EmployeeRelegationInfoAction extends DispatchAction{
	private IEmployeeService employeeService;
	private IProjectService projectService;
	private HoursWorkService hoursWorkService;

	public void setHoursWorkService(HoursWorkService hoursWorkService) {
		this.hoursWorkService = hoursWorkService;
	}
	public void setProjectService(IProjectService projectService) {
		this.projectService = projectService;
	}
	public void setEmployeeService(IEmployeeService employeeService) {
		this.employeeService = employeeService;
	}
	private static final Log log = LogFactory.getLog(EmployeeRelegationInfoAction.class);
	DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");

	//³õ'»¯
	public ActionForward initPage(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		try{
			List<String> proMgrList = employeeService.queryNameListByRank("3");
			List<String> blList4Rel = employeeService.queryAllBl4Rel();
			request.setAttribute("blList4Rel", blList4Rel);
			request.setAttribute("proMgrList",proMgrList);
		}catch (Exception e) {
			e.printStackTrace();
		}
		return mapping.findForward("success");
	}
	//²éѯ
	public ActionForward search(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		try{
			LazyValidatorForm lzform = (LazyValidatorForm)form;
			String name = (String)lzform.get("ename4rel");
			String dateS = (String)lzform.get("estimateLDateS4rel");
			String dateE = (String)lzform.get("estimateLDateE4rel");
			String ProMgr = (String)lzform.get("ProMgr4rel");
			String status = (String)lzform.get("status4rel");
			String bl4Rel = (String)lzform.get("bl4Rel");
			EmployeeRelegationInfo eri = new EmployeeRelegationInfo();
			eri.setEmployeeName(name);
			if(dateE!=null&&dateE.trim().length()>0){
				Date estimateLDateE = fmt.parse(dateE);
				eri.setEstimateLDateE(estimateLDateE);
			}
			if(dateS!=null&&dateS.trim().length()>0){
				Date estimateLDateS = fmt.parse(dateS);
				eri.setEstimateLDateS(estimateLDateS);
			}
			eri.setProjectManager(ProMgr);
			eri.setWorkstaus(status);
			eri.setBusinessLine(bl4Rel);
			List lt = employeeService.queryRelegationInfo(eri);
			List<String> proMgrList = employeeService.queryNameListByRank("3");
			List<String> blList4Rel = employeeService.queryAllBl4Rel();
			request.setAttribute("blList4Rel", blList4Rel);
			request.setAttribute("proMgrList",proMgrList);
			if(lt!=null){
				request.setAttribute("eriList", lt);
				request.setAttribute("resultCount", lt.size());
				return mapping.findForward("success");
			}else{
				return mapping.findForward("error");
			}
		} catch (Exception e) {
			e.printStackTrace();
			log.error(e.getMessage());
			return mapping.findForward("error");
		}
	}
	//Ìøתµ½Ìí¼ÓÒ³Ãæ
	public ActionForward toAdd(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
			try {
				LazyValidatorForm lzform = (LazyValidatorForm)form;
				lzform.set("eId4addRel", "");
				lzform.set("eName4addRel", "");
				lzform.set("proDrt4addRel", "");
				lzform.set("proMgr4addRel", "");
				lzform.set("proLdr4addRel", "");
				lzform.set("grade4addRel", "");
				lzform.set("bline4addRel", "");
				lzform.set("proNum4addRel", "");
				lzform.set("tsPro4addRel", "");
				lzform.set("status4addRel", "");
				lzform.set("freeDate4addRel", "");
				lzform.set("billingDate4addRel", "");
				lzform.set("stimateDate4addRel", "");
				lzform.set("realityDate4addRel", "");
				lzform.set("changing4addRel", "");
				lzform.set("com4addRel", "");
				lzform.set("skill4addRel", "");
				List<ProjectInfo> list = projectService.queryProInfoByName("");
				request.setAttribute("proList", list);
				//ÏîÄ¿×ܼà
				List<String> proDrtList = employeeService.queryNameListByRank("1");
				//ÏîÄ¿¾Àí
				List<String> proMgrList = employeeService.queryNameListByRank("3");
				//ÏîÄ¿×鳤
				List<String> proLdrList = employeeService.queryNameListByRank("4");
				request.setAttribute("proDrtList",proDrtList);
				request.setAttribute("proMgrList",proMgrList);
				request.setAttribute("proLdrList",proLdrList);
				return mapping.findForward("success1");
			} catch (Exception e) {
				e.printStackTrace();
				return mapping.findForward("error");
			}
	}

	//Ìí¼ÓÐÅÏ¢
	public ActionForward addRelInfo(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {

			try {
				EmployeeRelegationInfo eri = new EmployeeRelegationInfo();
				//Ô±¹¤±àºÅ
				eri.setEmployeeId(BeanUtils.getProperty(form, "eId4addRel"));
				eri.setEmployeeName(BeanUtils.getProperty(form, "eName4addRel"));
				eri.setProjectDirector(BeanUtils.getProperty(form, "proDrt4addRel"));
				eri.setProjectManager(BeanUtils.getProperty(form, "proMgr4addRel"));
				eri.setProjectLeader(BeanUtils.getProperty(form, "proLdr4addRel"));
				eri.setGrade(BeanUtils.getProperty(form, "grade4addRel"));
				eri.setBusinessLine(BeanUtils.getProperty(form, "bline4addRel"));
				eri.setBelongedTSprojectId(BeanUtils.getProperty(form, "proNum4addRel"));
				ProjectInfo pi = projectService.queryProInfoById(BeanUtils.getProperty(form, "tsPro4addRel"));
				if(pi!=null)
				eri.setBelongedTSproject(pi.getProName());
				eri.setWorkstaus(BeanUtils.getProperty(form, "status4addRel"));
				if(BeanUtils.getProperty(form, "freeDate4addRel").trim().length()>0&&BeanUtils.getProperty(form, "freeDate4addRel")!=null){
					eri.setAdmittancefreeDate(fmt.parse(BeanUtils.getProperty(form, "freeDate4addRel")));
				}
				if(BeanUtils.getProperty(form, "billingDate4addRel").trim().length()>0&&BeanUtils.getProperty(form, "billingDate4addRel")!=null){
					eri.setAdmittancebillingDate(fmt.parse(BeanUtils.getProperty(form, "billingDate4addRel")));
				}
				if(BeanUtils.getProperty(form, "stimateDate4addRel").trim().length()>0&&BeanUtils.getProperty(form, "stimateDate4addRel")!=null){
					eri.setOutsceneestimateDate(fmt.parse(BeanUtils.getProperty(form, "stimateDate4addRel")));
				}
				if(BeanUtils.getProperty(form, "realityDate4addRel").trim().length()>0&&BeanUtils.getProperty(form, "realityDate4addRel")!=null){
					eri.setOutscenerealityDate(fmt.parse(BeanUtils.getProperty(form, "realityDate4addRel")));
				}
				eri.setEmpOperate(BeanUtils.getProperty(form, "changing4addRel"));
				eri.setCompany(BeanUtils.getProperty(form, "com4addRel"));
				eri.setSkill(BeanUtils.getProperty(form, "skill4addRel"));
				if(eri.getEmployeeId()!=null&&eri.getEmployeeId().length()>0){
					EmployeeRelegationInfo erri = employeeService.queryEriInfoByEid(eri);
					if(erri!=null){
						request.setAttribute("err_msg","´ËÐÅÏ¢ÒÑ´æÔÚ,ÇëºËʵºóÖØвÙ×÷!");
						return toAdd(mapping, form, request, response);
					}
					employeeService.addRelegationInfo(eri);
				}else{
					employeeService.addRelegationInfoNoId(eri);
				}

				//Ô±¹¤±ä¶¯£¨È磺ÈëÖ°£©
				String changeFlag = BeanUtils.getProperty(form, "changing4addRel");
				if(changeFlag!=null&&!changeFlag.isEmpty()){
					EmpRelStaInfo ercr4check = employeeService.queryLastRecord(BeanUtils.getProperty(form, "eId4addRel"));
					if(ercr4check==null || !changeFlag.equals(ercr4check.getOperate())){
						//¹¹Ôì²åÈëʵÌå
								EmpRelStaInfo ersi = new EmpRelStaInfo();
								ersi.setEmployeeId(BeanUtils.getProperty(form, "eId4addRel"));
								ersi.setEmployeeName(BeanUtils.getProperty(form, "eName4addRel"));
								ersi.setUpdateTime(new Date());
								ersi.setOperate(changeFlag);
								ersi.setBusinessLine(eri.getBusinessLine());
								if(eri.getSkill()!=null&&eri.getSkill().trim().length()>0){
									if("²âÊÔ".equals(eri.getSkill()) || "Test".equals(eri.getSkill())){
										ersi.setTechnology("0");
									}else{
										ersi.setTechnology("1");
									}
								}else{
									ersi.setTechnology("1");
								}
							employeeService.addChangeRecord(ersi);
					}
				}
				request.setAttribute("success_msg", "yes");
				return mapping.findForward("success1");
			} catch (Exception e) {
				e.printStackTrace();
				return mapping.findForward("error");
			}
	}
	//Ìøתµ½ÐÞ¸ÄÒ³Ãæ
	public ActionForward toUpdate(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
			LazyValidatorForm lzform = (LazyValidatorForm)form;
			lzform.set("changing4ud", "");
			try {
				String str = GmsUtils.fix2utf(request.getParameter("str"));
				String tem [] = str.split(",");
				EmployeeRelegationInfo eri4query = new EmployeeRelegationInfo();
				eri4query.setEmployeeId(tem[0]);
				eri4query.setBelongedTSproject(tem[1]);
				if(tem.length==3){
					eri4query.setWorkstaus(tem[2]);
				}else{
					eri4query.setWorkstaus(" ");

				}
				EmployeeRelegationInfo eri = employeeService.queryEriInfoByEid(eri4query);
				if(eri==null){
					request.setAttribute("err_msg", "Ô±¹¤²»´æÔÚ,»òÐÅÏ¢ÒѸüÐÂ,ÇëˢкóÖØÊÔ!");
					return mapping.findForward("success2");
				}
				DateFormat date = new SimpleDateFormat("yyyy-MM-dd");
				if(eri.getAdmittancefreeDate()!= null){
				String admittancefreeDate = date.format(eri.getAdmittancefreeDate());
				request.setAttribute("admittancefreeDate", admittancefreeDate);}
				if(eri.getAdmittancebillingDate()!= null){
				String admittancebillingDate = date.format(eri.getAdmittancebillingDate());
				request.setAttribute("admittancebillingDate", admittancebillingDate);}
				if(eri.getOutsceneestimateDate()!= null){
				String outsceneestimateDate = date.format(eri.getOutsceneestimateDate());
				request.setAttribute("outsceneestimateDate", outsceneestimateDate);}
				if(eri.getOutscenerealityDate()!= null){
				String outscenerealityDate = date.format(eri.getOutscenerealityDate());
				request.setAttribute("outscenerealityDate", outscenerealityDate);}
	//¸ù¾ÝÏîÄ¿Ãû³Æ»ñÈ¡ÏîÄ¿ÐÅÏ¢
				List<ProjectInfo> list = projectService.queryProInfoByName("");
				request.setAttribute("proList", list);

				//ÏîÄ¿×ܼà
				List<String> proDrtList = employeeService.queryNameListByRank("1");
				if(eri.getProjectDirector()!=null&&proDrtList.contains(eri.getProjectDirector())) proDrtList.remove(eri.getProjectDirector());
				//ÏîÄ¿¾Àí
				List<String> proMgrList = employeeService.queryNameListByRank("3");
				if(eri.getProjectManager()!=null&&proMgrList.contains(eri.getProjectManager())) proMgrList.remove(eri.getProjectManager());
				//ÏîÄ¿×鳤
				List<String> proLdrList = employeeService.queryNameListByRank("4");
				if(eri.getProjectLeader()!=null&&proLdrList.contains(eri.getProjectLeader())) proLdrList.remove(eri.getProjectLeader());
				request.setAttribute("eri", eri);
				request.setAttribute("proDrtList",proDrtList);
				request.setAttribute("proMgrList",proMgrList);
				request.setAttribute("proLdrList",proLdrList);

				return mapping.findForward("success2");
			} catch (Exception e) {
				e.printStackTrace();
				return mapping.findForward("error");
			}
	}

	//ÐÞ¸ÄÒ³Ãæ
	public ActionForward updateRelInfo(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {

			try {
				EmployeeRelegationInfo eri = new EmployeeRelegationInfo();
				//Ô±¹¤±àºÅ
				eri.setEmployeeIdNew(BeanUtils.getProperty(form, "eId4relUd"));
				eri.setEmployeeId(BeanUtils.getProperty(form, "oldEmpId"));
				eri.setEmployeeName(BeanUtils.getProperty(form, "eName4relUd"));
				eri.setProjectDirector(BeanUtils.getProperty(form, "proDrt4relUd"));
				eri.setProjectManager(BeanUtils.getProperty(form, "proMgr4relUd"));
				eri.setProjectLeader(BeanUtils.getProperty(form, "proLdr4relUd"));
				eri.setGrade(BeanUtils.getProperty(form, "grade4relUd"));
				eri.setBusinessLine(BeanUtils.getProperty(form, "bline4relUd"));
				eri.setBelongedTSprojectId(BeanUtils.getProperty(form, "proNum4relUd"));
				List<ProjectInfo> tem = projectService.queryProInfoByName(BeanUtils.getProperty(form, "tsPro4relUd"));
				if(tem.size()==1) eri.setNewProName(tem.get(0).getProName());
				eri.setNewWorkstatus(BeanUtils.getProperty(form, "status4relUd"));
				if(BeanUtils.getProperty(form, "freeDate4relUd").trim().length()>0&&BeanUtils.getProperty(form, "freeDate4relUd")!=null){
					eri.setAdmittancefreeDate(fmt.parse(BeanUtils.getProperty(form, "freeDate4relUd")));
				}
				if(BeanUtils.getProperty(form, "billingDate4relUd").trim().length()>0&&BeanUtils.getProperty(form, "billingDate4relUd")!=null){
					eri.setAdmittancebillingDate(fmt.parse(BeanUtils.getProperty(form, "billingDate4relUd")));
				}
				if(BeanUtils.getProperty(form, "stimateDate4relUd").trim().length()>0&&BeanUtils.getProperty(form, "stimateDate4relUd")!=null){
					eri.setOutsceneestimateDate(fmt.parse(BeanUtils.getProperty(form, "stimateDate4relUd")));
				}
				if(BeanUtils.getProperty(form, "realityDate4relUd").trim().length()>0&&BeanUtils.getProperty(form, "realityDate4relUd")!=null){
					eri.setOutscenerealityDate(fmt.parse(BeanUtils.getProperty(form, "realityDate4relUd")));
				}
				eri.setWorkstaus(BeanUtils.getProperty(form, "oldStatus"));
				eri.setBelongedTSproject(BeanUtils.getProperty(form, "oldProName"));
				eri.setEmpOperate(BeanUtils.getProperty(form, "changing4ud"));
				eri.setCompany(BeanUtils.getProperty(form, "com4relUd"));
				eri.setSkill(BeanUtils.getProperty(form, "skill4relUd"));
				try{
					employeeService.modifyEmpRelInfo(eri);
				}catch (Exception e) {
					request.setAttribute("err_msg","´ËÐÅÏ¢ÒÑ´æÔÚ,ÇëºËʵºóÖØвÙ×÷!");
					return mapping.findForward("success2");
				}
				//״̬ÐÞ¸ÄΪ¡®ÀëÖ°¡¯ ɾ³ýÀëÖ°ÈÕÆÚºóµÄÔ¤ÖÃÐÅÏ¢(¹¤Ê±ÏêÇé±íÖÐÔÚÔ±¹¤»ù±¾ÐÅÏ¢µ¼Èëʱ »áÿÈËÔ¤ÖÃ365ÌõÊý¾Ý)
//				if(eri.getNewWorkstatus()!=null&&eri.getNewWorkstatus().equals("5")){
//					EmployeeHoursDetailInfo ehdi =  new EmployeeHoursDetailInfo();
//					ehdi.setEmployeeId(eri.getEmployeeId());
//
//					EmployeeDimissionInfo edi = new EmployeeDimissionInfo();
//					edi.setEmployeeId(eri.getEmployeeId());
//					List<EmployeeDimissionInfo> ls = employeeService.queryDimissionInfo(edi);
//					if(ls!=null&&ls.size()==1&&ls.get(0).getResignationDate()!=null){
//						ehdi.setStandardDate(ls.get(0).getResignationDate());
//					}else {
//						ehdi.setStandardDate(new Date());
//					}
//					hoursWorkService.delHoursDetailInfo4dim(ehdi);
//				}
				//Ô±¹¤±ä¶¯£¨È磺ÈëÖ°£©
				String changeFlag = BeanUtils.getProperty(form, "changing4ud");
				if(changeFlag!=null&&!changeFlag.isEmpty()){
					EmpRelStaInfo ercr4check = employeeService.queryLastRecord(BeanUtils.getProperty(form, "eId4relUd"));
					if(ercr4check==null || !changeFlag.equals(ercr4check.getOperate())){

							EmpRelStaInfo ersi = new EmpRelStaInfo();
							ersi.setEmployeeId(BeanUtils.getProperty(form, "eId4relUd"));
							ersi.setEmployeeName(BeanUtils.getProperty(form, "eName4relUd"));
							ersi.setUpdateTime(new Date());
							ersi.setOperate(changeFlag);
							String bl = eri.getBusinessLine();
							ersi.setBusinessLine(bl);
							if(eri.getSkill()!=null&&eri.getSkill().trim().length()>0){
								if("²âÊÔ".equals(eri.getSkill()) || "Test".equals(eri.getSkill())){
									ersi.setTechnology("0");
								}else{
									ersi.setTechnology("1");
								}
							}else{
								ersi.setTechnology("1");
							}
							employeeService.addChangeRecord(ersi);
					}
				}
				request.setAttribute("success_msg", "yes");
				return mapping.findForward("success2");
			} catch (Exception e) {
				e.printStackTrace();
				return mapping.findForward("error");
			}
	}

	//ɾ³ý¹éÊôÐÅÏ¢
	public ActionForward deleteRelInfo(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
			try {
				LazyValidatorForm lzform = (LazyValidatorForm)form;
				String msg=(String)lzform.get("msg4del");
				String msgs [] = msg.split("_-_");
				for(String tem :msgs){
					EmployeeRelegationInfo eri = new EmployeeRelegationInfo();
					String a[] = tem.split(",");
					eri.setEmployeeId(a[0]);
					eri.setBelongedTSproject(a[1]);
					eri.setWorkstaus(a[2]);
					employeeService.removeEmpRelInfo(eri);
				}
				return search(mapping, lzform, request, response);
			} catch (Exception e) {
				e.printStackTrace();
				return mapping.findForward("error");
			}
	}
	//Ìøתµ½µ¼ÈëÒ³Ãæ
	public ActionForward toImp(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
			try {
				return mapping.findForward("success3");
			} catch (Exception e) {
				e.printStackTrace();
				return mapping.findForward("error");
			}
	}

}


text:
Note version numbers:
- Google Test - 1.8

redpajama_set_name: RedPajamaGithub


text:
/* =================================================================================================

(c - MIT) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/cppmat

================================================================================================= */

#ifndef CPPMAT_FIX_CARTESIAN_TENSOR2S_PYBIND11_HPP
#define CPPMAT_FIX_CARTESIAN_TENSOR2S_PYBIND11_HPP

#include "pybind11.h"

namespace py = pybind11;

namespace pybind11 {
namespace detail {

// =================================================================================================
// type caster: cppmat::tiny::cartesian::tensor2s <-> NumPy-array
// =================================================================================================

template<typename X, size_t ND> struct type_caster<cppmat::tiny::cartesian::tensor2s<X,ND>>
{
public:

  using Arr = cppmat::tiny::cartesian::tensor2s<X,ND>;

  PYBIND11_TYPE_CASTER(Arr, _("cppmat::tiny::cartesian::tensor2s<X,ND>"));

  // Python -> C++
  // -------------

  bool load(py::handle src, bool convert)
  {
    // - basic pybind11 check
    if ( !convert && !py::array_t<X>::check_(src) ) return false;

    // - storage requirements : contiguous and row-major storage from NumPy
    auto buf = py::array_t<X, py::array::c_style | py::array::forcecast>::ensure(src);
    // - check
    if ( !buf ) return false;

    // - rank of the input array (number of indices)
    auto rank = buf.ndim();
    // - check
    if ( rank != 2 ) return false;

    // - check shape in each direction
    for ( ssize_t i = 0 ; i < rank ; ++i )
      if ( static_cast<size_t>(buf.shape()[i]) != ND )
        return false;

    // - all checks passed : create the proper C++ variable
    value = cppmat::tiny::cartesian::tensor2s<X,ND>::CopyDense(buf.data(), buf.data()+buf.size());

    // - signal successful variable creation
    return true;
  }

  // C++ -> Python
  // -------------

  static py::handle cast(const cppmat::tiny::cartesian::tensor2s<X,ND>& src,
    py::return_value_policy, py::handle)
  {
    // - convert to dense tensor
    cppmat::tiny::cartesian::tensor2<X,ND> tmp = src;

    // - create Python variable (all variables are copied)
    py::array a(std::move(tmp.shape()), std::move(tmp.strides(true)), tmp.data());

    // - release variable to Python
    return a.release();
  }
};

// =================================================================================================

}} // namespace pybind11::detail

// -------------------------------------------------------------------------------------------------

#endif


text:
package com.alibaba.excel.enums.poi;

import lombok.Getter;
import org.apache.poi.ss.usermodel.VerticalAlignment;

/**
 * This enumeration value indicates the type of vertical alignment for a cell, i.e.,
 * whether it is aligned top, bottom, vertically centered, justified or distributed.
 *
 *
 *
 * @author Jiaju Zhuang
 */
@Getter
public enum VerticalAlignmentEnum {
    /**
     * null
     */
    DEFAULT(null),
    /**
     * The vertical alignment is aligned-to-top.
     */
    TOP(VerticalAlignment.TOP),

    /**
     * The vertical alignment is centered across the height of the cell.
     */
    CENTER(VerticalAlignment.CENTER),

    /**
     * The vertical alignment is aligned-to-bottom. (typically the default value)
     */
    BOTTOM(VerticalAlignment.BOTTOM),

    /**
     *

     * When text direction is horizontal: the vertical alignment of lines of text is distributed vertically,
     * where each line of text inside the cell is evenly distributed across the height of the cell,
     * with flush top and bottom margins.
     *

     *

     * When text direction is vertical: similar behavior as horizontal justification.
     * The alignment is justified (flush top and bottom in this case). For each line of text, each
     * line of the wrapped text in a cell is aligned to the top and bottom (except the last line).
     * If no single line of text wraps in the cell, then the text is not justified.
     *

     */
    JUSTIFY(VerticalAlignment.JUSTIFY),

    /**
     *

     * When text direction is horizontal: the vertical alignment of lines of text is distributed vertically,
     * where each line of text inside the cell is evenly distributed across the height of the cell,
     * with flush top
     *

     *

     * When text direction is vertical: behaves exactly as distributed horizontal alignment.
     * The first words in a line of text (appearing at the top of the cell) are flush
     * with the top edge of the cell, and the last words of a line of text are flush with the bottom edge of the cell,
     * and the line of text is distributed evenly from top to bottom.
     *

     */
    DISTRIBUTED(VerticalAlignment.DISTRIBUTED);

    VerticalAlignment poiVerticalAlignmentEnum;

    VerticalAlignmentEnum(VerticalAlignment poiVerticalAlignmentEnum) {
        this.poiVerticalAlignmentEnum = poiVerticalAlignmentEnum;
    }
}


text:
var selectorMatchExpression = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/;
var tagMatchExpression = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;
var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi;
var isWhiteSpace = (/[^\x20\t\r\n\f]+/g);
var typeNameSpace = /^([^.]*)(?:\.(.+)|)/;
var strTrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;

var bind = window.addEventListener ? 'addEventListener' : 'attachEvent',
    unbind = window.removeEventListener ? 'removeEventListener' : 'detachEvent',
    prefix = '',
    fun = function() {};
prefix = bind !== 'addEventListener' ? 'on' : '';

var domContext = document,
    hasClass, addClass, removeClass, toggleClass,
    push = [].push,
    guaranteedUnique = {
        children: true,
        contents: true,
        next: true,
        prev: true
    },
    parentsPrev = /^(?:parents|prev(?:Until|All))/;
var concat = [].concat;
var slice = [].slice;

// matches polyfill
window.Element && function(ElementPrototype) {
    ElementPrototype.matches = ElementPrototype.matches ||
        ElementPrototype.matchesSelector ||
        ElementPrototype.webkitMatchesSelector ||
        ElementPrototype.msMatchesSelector ||
        function(selector) {
            var node = window,
                nodes = (node.parentNode || node.document).querySelectorAll(selector),
                i = -1;
            while (nodes[++i] && nodes[i] != node);
            return !!nodes[i];
        }
}(Element.prototype);

// closest polyfill
window.Element && function(ElementPrototype) {
    ElementPrototype.closest = ElementPrototype.closest || function(selector) {
        var el = window;
        while (el.matches && !el.matches(selector)) el = el.parentNode;
        return el.matches ? el : null;
    }
}(Element.prototype);

if ('classList' in document.documentElement) {
    hasClass = function(element, name) {
        return element.classList.contains(name);
    };
    addClass = function(element, name) {
        element.classList.add(name);
    };
    removeClass = function(element, name) {
        element.classList.remove(name);
    };
    toggleClass = function(element, name) {
        element.classList.toggle(name);
    };
} else {
    hasClass = function(element, name) {
        return new RegExp('(^|\\s)' + name + '(\\s|dom)').test(element.className);
    };
    addClass = function(element, name) {
        if (!hasClass(element, name)) {
            element.className += (element.className ? ' ' : '') + name;
        }
    };
    removeClass = function(element, name) {
        if (hasClass(element, name)) {
            element.className = element.className.replace(new RegExp('(^|\\s)*' + name + '(\\s|dom)*', 'g'), '');
        }
    };
    toggleClass = function(element, name) {
        (hasClass(element, name) ? removeClass : addClass)(element, name);
    };
}

var siblings = function(n, elem) {
        var matched = [];
        for (; n; n = n.nextSibling) {
            if (n.nodeType === 1 && n !== elem) {
                matched.push(n);
            }
        }
        return matched;
    },
    filter = function(selector, nodes) {
        var length = nodes.length,
            i = 0,
            matche = [];
        while (i < length) {
            if (nodes[i].matches(selector)) {
                matche.push(nodes[i]);
            }
            ++i;
        }
        return matche;
    },
    uniqueSort = function(ary) {
        var i, j, ele = [],
            l = ary.length,
            hasDuplicate = false,
            compare;
        for (i = 0; i < l; i++) {
            for (j = i + 1; j < l; j++) {
                if (ary[i] === ary[j]) {
                    j = ++i;
                }
            }
            ele.push(ary[i]);
        }
        ele = ele.sort(function(a, b) {
            if (a === b) {
                hasDuplicate = true;
                return 0;
            }
            compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
            if (compare) {
                return compare;
            }
            compare = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1;
            return compare & 4 ? -1 : 1;

        });
        return ele;
    },
    dir = function(elem, dir, until) {
        var matched = [],
            truncate = until !== undefined;

        while ((elem = elem[dir]) && elem.nodeType !== 9) {
            if (elem.nodeType === 1) {
                if (truncate && jQuery(elem).is(until)) {
                    break;
                }
                matched.push(elem);
            }
        }
        return matched;
    },
    isType = function(val) {
        if (typeof val === 'undefined') return 'undefined';
        if (typeof val === 'object' && !val) return 'null';
        return ({}).toString.call(val).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
    },
    isArray = function(obj) {
        var length = !!obj && 'length' in obj && obj.length,
            type = isType(obj);
        return type === 'array' || length === 0 || typeof length === 'number' && length > 0 && (length - 1) in obj;
    },
    getText = function(elem) {
        var i = 0,
            ret = '',
            l = elem.length;
        var nodeType = elem.nodeType;
        if (!nodeType) {
            while ((node = elem[i++])) {
                ret += getText(node);
            }
        } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) {
            if (typeof elem.textContent === "string") {
                return elem.textContent;
            } else {
                // Traverse its children
                for (elem = elem.firstChild; elem; elem = elem.nextSibling) {
                    ret += getText(elem);
                }
            }
        } else if (nodeType === 3 || nodeType === 4) {
            return elem.nodeValue;
        }
        return ret;
    },
    showHide = function(el, show) {
        var display = el.style.display;
        if (show) {
            if (display === 'none' || display === '') {
                el.style.display = 'block';
            }
        } else if (display !== 'none') {
            el.style.display = 'none';
        }
    },
    isHidden = function(el) {
        return (window.getComputedStyle ? getComputedStyle(el, null) : el.currentStyle).display === 'none';
    };

var dom = function(selector, attributes) {
    return new dom.fn.init(selector, attributes);
};

dom.fn = dom.prototype = {
    constructor: dom,
    each: function(callback) {
        return dom.each(this, callback);
    },
    map: function(callback) {
        return this.pushStack(dom.map(this, function(elem, i) {
            return callback.call(elem, i, elem);
        }));
    },
    pushStack: function(elements) {
        return dom.merge(this.constructor(), elements);
    },
    addClass: function(value) {
        if (typeof value === "string" && value) {
            value = value.match(isWhiteSpace) || [];
            var classLength = value.length;
            while (classLength--) {
                if (this.nodeType === 1) {
                    addClass(this, value[classLength]);
                } else {
                    var eleLength = this.length;
                    while (eleLength--) {
                        addClass(this[eleLength], value[classLength]);
                    }
                }
            }
        }
        return this;
    },
    removeClass: function(value) {
        if (value === undefined || value === null || value === '') {
            return this.attr('class', '');
        }

        if (typeof value === "string" && value) {
            value = value.match(isWhiteSpace) || [];
            var classLength = value.length;
            while (classLength--) {
                if (this.nodeType === 1) {
                    removeClass(this, value[classLength]);
                } else {
                    var eleLength = this.length;
                    while (eleLength--) {
                        removeClass(this[eleLength], value[classLength]);
                    }
                }
            }
        }
        return this;
    },
    toggleClass: function(value) {
        if (this.nodeType === 1) {
            toggleClass(this, value);
        } else {
            var l = this.length;
            while (l--) {
                toggleClass(this[l], value);
            }
        }
        return this;
    },
    remove: function(value) {
        var el = this;
        if (el.nodeType === 1) {
            el.parentNode.removeChild(el);
        } else {
            var i = 0,
                l = el.length;
            for (; i < l; i++) {
                el[i].parentNode.removeChild(el[i]);
            }
        }
        return el;
    },
    closest: function(selector) {
        var matches;

        return this.each(function() {
            var parentNode = this.parentNode;
            while ((matches = parentNode && parentNode.matches) && !parentNode.matches(selector)) {
                parentNode = parentNode.parentNode;
            }
            return matches ? parentNode : null;
        });
    },
    wrap: function(html) {
        var wrapper = domanipulation(html);
        wrapper = this.pushStack(wrapper);
        // The elements to wrap the target around
        if (this[0].parentNode) {
            wrapper.insertBefore(this[0]);
        }
        wrapper.map(function() {
            var elem = this;
            while (elem.firstElementChild) {
                elem = elem.firstElementChild;
            }
            return elem;
        }).append(this);
        return this;
    },
    html: function(html) {
        //setHTML paramater is undefined
        if (html === undefined) {
            //return the innerHTML of the element
            return this[0].innerHTML;
        }
        //set the html if the setHTML parameter is provided
        this[0].innerHTML = html;
        return this;
    },
    text: function(value) {
        return value === undefined ? getText(this) : this.each(function() {
            if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
                this.textContent = value;
            }
        });
    },
    attr: function(property, value) {
        var el = this[0],
            nodeType;
        nodeType = el.nodeType;
        if (nodeType === 3 || nodeType === 8 || nodeType === 2) {
            return;
        }
        property = property.toLowerCase();
        return value !== undefined ? el.setAttribute(property, value) : el.getAttribute(property) || el.getAttributeNode(property);
    },
    val: function(value) {
        if (this.length) {
            return value !== undefined ? this[0].value = value : this[0].value;
        }
        return;
    },
    get: function(num) {
        if (num === null || num === undefined) {
            return slice.call(this);
        }
        return num < 0 ? this[num + this.length] : this[num];
    },
    eq: function(i) {
        var len = this.length,
            j = +i + (i < 0 ? len : 0);
        return this.pushStack(j >= 0 && j < len ? [this[j]] : []);
    },
    not: function(selector) {
        return this.pushStack(windowFilter(this, selector || [], true));
    },
    clone: function() {
        var cloned = this[0].cloneNode(true);
        return this.pushStack([cloned]);
    },
    hide: function() {
        return this.each(function() {
            showHide(this);
        });
    },
    show: function() {
        return this.each(function() {
            showHide(this, true);
        });
    },
    isHidden: function() {
        return isHidden(this[0]);
    },
    toggle: function(state) {
        if (typeof state === 'boolean') {
            return state ? this.show() : this.hide();
        }
        return this.each(function() {
            if (isHidden(this)) {
                showHide(this, true);
            } else {
                showHide(this);
            }
        });
    },
    find: function(selector) {
        var i, ret,
            len = this.length,
            self = this;
        var dm = this.pushStack([]);
        for (i = 0; i < len; i++) {
            domfinder(selector, self[i], dm);
        }
        return len > 1 ? dom.uniqueSort(dm) : dm;
    }
};

function domfinder(selector, context, results) {
    context = context || document;
    results = results || [];
    var match = selectorMatchExpression.exec(selector);
    if (match) {
        if ((m = match[1])) {
            var elem = document.getElementById(m);
            if (elem) {
                results.push(context, [elem]);
            }
            return results;
            // TAG selector
        } else if (match[2]) {
            push.apply(results, context.getElementsByTagName(selector));
            return results;
            // Class selector
        } else if ((m = match[3]) && context.getElementsByClassName) {
            push.apply(results, context.getElementsByClassName(m));
            return results;
        }
    } else if (!attributes) {
        try {
            push.apply(results, context.querySelectorAll(selector));
            return results;
        } catch (domError) {}
    }
}

function windowFilter(elements, qualifier) {
    if (dom.isFunction(qualifier)) {
        return dom.grep(elements, function(elem, i) {
            return !!qualifier.call(elem, i, elem) !== true;
        });
    }
    if (qualifier.nodeType) {
        return dom.grep(elements, function(elem) {
            return (elem === qualifier) !== true;
        });
    }
}

function domanipulation(selector) {
    if (typeof selector === "string") {
        var fragment = domContext.createDocumentFragment(),
            tmp;
        tmp = fragment.appendChild(domContext.createElement("div"));
        tmp.innerHTML = "" + dom.htmlPrefilter(selector) + "";
        return tmp.childNodes;
    } else if (selector.nodeType) {
        return [selector];
    }
    return selector;
}

var init = dom.fn.init = function(selector, attributes) {
    if (!selector) {
        return this;
    }

    var match, context = this,
        m;

    if (typeof selector === "string") {

        if (selector[0] === "<" && selector[selector.length - 1] === ">" && selector.length >= 3) {
            match = [null, selector, null];
            var parsed = tagMatchExpression.exec(selector);
            if (parsed) {
                push.apply(context, [domContext.createElement(parsed[1])]);
            } else {
                tmp = domanipulation(selector);
                context = dom.merge(context, tmp);
            }
            if ((tagMatchExpression).test(match[1]) && this.isPlainObject(attributes)) {
                for (var key in attributes) {
                    // Properties of context are called as methods if possible
                    if (this.isFunction(this[key])) {
                        this[key](attributes[key]);
                        // ...and otherwise set as attributes
                    } else {
                        this.attr(key, attributes[key]);
                    }
                }
            }
            return context;
        } else {
            match = selectorMatchExpression.exec(selector);
        }
        if (match) {
            if ((m = match[1])) {
                var elem = document.getElementById(m);
                if (elem) {
                    push.apply(context, [elem]);
                }
                return context;
                // TAG selector
            } else if (match[2]) {
                push.apply(context, domContext.getElementsByTagName(selector));
                return context;
                // Class selector
            } else if ((m = match[3]) && domContext.getElementsByClassName) {
                push.apply(context, domContext.getElementsByClassName(m));
                return context;
            }
        } else if (!attributes) {
            try {
                push.apply(context, domContext.querySelectorAll(selector));
                return context;
            } catch (domError) {}
        }
    } else if (selector.nodeType) {
        push.apply(context, [selector]);
        return context;
    }
    return selector;
};

init.prototype = dom.fn;

dom.extend = dom.fn.extend = function() {
    var target = this || {},
        len = arguments.length,
        args,
        i = 0;
    if (!len)
        return target;
    for (; i < len; i++) {
        args = arguments[i];
        for (var key in args) {
            target[key] = args[key];
        }
    }
    args = null;
    return target;
};
dom.isFunction = dom.fn.isFunction = function(fun) {
    return (fun instanceof Function || typeof fun == 'function');
};

dom.isPlainObject = dom.fn.isPlainObject = function(obj) {
    // Basic check for Type object that's not null
    if (typeof obj == 'object' && obj !== null) {
        // If Object.getPrototypeOf supported, use it
        if (typeof Object.getPrototypeOf == 'function') {
            var proto = Object.getPrototypeOf(obj);
            return proto === Object.prototype || proto === null;
        }
        // Otherwise, use internal class
        // This should be reliable as if getPrototypeOf not supported, is pre-ES5
        return Object.prototype.toString.call(obj) == '[object Object]';
    }
    // Not an object
    return false;
};

dom.extend({
    each: function(obj, callback) {
        var length, i = 0;
        if (isArray(obj)) {
            length = obj.length;
            for (; i < length; i++) {
                if (callback.call(obj[i], i, obj[i]) === false) {
                    break;
                }
            }
        } else {
            for (i in obj) {
                if (callback.call(obj[i], i, obj[i]) === false) {
                    break;
                }
            }
        }
        return obj;
    },
    map: function(elems, callback, arg) {
        var length, value,
            i = 0,
            ret = [];
        // Go through the array, translating each of the items to their new values
        if (isArray(elems)) {
            length = elems.length;
            for (; i < length; i++) {
                value = callback(elems[i], i, arg);

                if (value !== null) {
                    ret.push(value);
                }
            }
            // Go through every key on the object,
        } else {
            for (i in elems) {
                value = callback(elems[i], i, arg);

                if (value !== null) {
                    ret.push(value);
                }
            }
        }
        // Flatten any nested arrays
        return concat.apply([], ret);
    },
    uniqueSort: function(ary) {
        var i, j, ele = [],
            l = ary.length,
            hasDuplicate = false,
            compare;
        for (i = 0; i < l; i++) {
            for (j = i + 1; j < l; j++) {
                if (ary[i] === ary[j]) {
                    j = ++i;
                }
            }
            ele.push(ary[i]);
        }
        ele = ele.sort(function(a, b) {
            if (a === b) {
                hasDuplicate = true;
                return 0;
            }
            compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
            if (compare) {
                return compare;
            }
            compare = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1;
            return compare & 4 ? -1 : 1;

        });
        return ele;
    },
    merge: function(first, second) {
        var len = +second.length,
            j = 0,
            i = first.length || 0;

        for (; j < len; j++) {
            first[i++] = second[j];
        }

        first.length = i;

        return first;
    },
    grep: function(elems, callback, invert) {
        var callbackInverse,
            matches = [],
            i = 0,
            length = elems.length,
            callbackExpect = !invert;

        // Go through the array, only saving the items
        // that pass the validator function
        for (; i < length; i++) {
            callbackInverse = !callback(elems[i], i);
            if (callbackInverse !== callbackExpect) {
                matches.push(elems[i]);
            }
        }

        return matches;
    },
    htmlPrefilter: function(html) {
        return html.replace(rxhtmlTag, "<$1></$2>");
    },
    trim: function(text) {
        return text === null ? "" : (text + "").replace(strTrim, "");
    }
});

dom.fn.extend({
    // text: function(value) {
    //     return access(this, function(value) {
    //         return value === undefined ?
    //             jQuery.text(this) :
    //             this.empty().each(function() {
    //                 if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
    //                     this.textContent = value;
    //                 }
    //             });
    //     }, null, value, arguments.length);
    // },

    append: function(elem) {
        return this.each(function() {

            if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
                elem = domanipulation(elem);
                this.appendChild(elem[0]);
            }
        });
    },

    prepend: function(elem) {
        return this.each(function() {
            if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
                elem = domanipulation(elem);
                target.insertBefore(elem[0], this.firstChild);
            }
        });
    },
    before: function(elem) {
        return this.each(function() {
            if (this.parentNode) {
                elem = domanipulation(elem);
                this.parentNode.insertBefore(elem[0], this);
            }
        });
    },

    after: function(elem) {
        return this.each(function() {
            if (this.parentNode) {
                elem = domanipulation(elem);
                this.parentNode.insertBefore(elem[0], this.nextSibling);
            }
        });
    }
});

dom.each({
    appendTo: "append",
    prependTo: "prepend",
    insertBefore: "before",
    insertAfter: "after"
    //  replaceAll: "replaceWith"
}, function(name, original) {
    dom.fn[name] = function(selector) {
        var elems,
            ret = [],
            insert = dom(selector),
            last = insert.length - 1,
            i = 0;

        for (; i <= last; i++) {
            elems = i === last ? this : this.clone(true);
            dom(insert[i])[original](elems);
            push.apply(ret, elems.get());
        }

        return this.pushStack(ret);
    };
});

function sibling(cur, dir) {
    while ((cur = cur[dir]) && cur.nodeType !== 1) {}
    return cur;
}
dom.each({
    parent: function(elem) {
        var parent = elem.parentNode;
        return parent && parent.nodeType !== 11 ? parent : null;
    },
    parents: function(elem) {
        return dir(elem, "parentNode");
    },
    parentsUntil: function(elem, i, until) {
        return dir(elem, "parentNode", until);
    },
    next: function(elem) {
        return sibling(elem, "nextSibling");
    },
    prev: function(elem) {
        return sibling(elem, "previousSibling");
    },
    nextAll: function(elem) {
        return dir(elem, "nextSibling");
    },
    prevAll: function(elem) {
        return dir(elem, "previousSibling");
    },
    nextUntil: function(elem, i, until) {
        return dir(elem, "nextSibling", until);
    },
    prevUntil: function(elem, i, until) {
        return dir(elem, "previousSibling", until);
    },
    siblings: function(elem) {
        return siblings((elem.parentNode || {}).firstChild, elem);
    },
    children: function(elem) {
        return siblings(elem.firstChild);
    }
}, function(name, fun) {
    dom.fn[name] = function(selector) {
        var matched = dom.map(this, fun, selector);
        if (selector && typeof selector === "string") {
            matched = filter(selector, matched);
        }
        if (this.length > 1) {
            // Remove duplicates
            if (!guaranteedUnique[name]) {
                dom.uniqueSort(matched);
            }
            // Reverse order for parents* and prev-derivatives
            if (parentsPrev.test(name)) {
                matched.reverse();
            }
        }
        return this.pushStack(matched);
    };
});

function addEvent(elem, eventType, selector, callback) {
    if (typeof selector === "string") {
        elem.addEventListener(eventType, function(event) {
            if ((event.target).closest(selector)) {
                callback(event);
            }
        });
    }
    if (dom.isFunction(selector)) {
        callback = selector;
        eventType = (eventType || "").match(isWhiteSpace) || [""];
        var l = eventType.length;
        while (l--) {
            eventType = typeNameSpace.exec(eventType[l])[1] || [];
            elem[bind](prefix + eventType, callback || fun, false);
        }
    }
}

dom.each(("blur focus click change select").split(" "), function(i, name) {
    // Handle event binding
    dom.fn[name] = function(selector, callback) {
        return arguments.length > 0 ? this.on(name, selector, callback) : this.fire(name, callback);
    };
});

dom.fn.extend({
    on: function(eventType, selector, callback) {
        return this.each(function() {
            addEvent(this, eventType, selector, callback);
        });
    },
    fire: function(event, callBack) {
        this.each(function() {
            fireEvent(this, event);
        });
    }
});

function fireEvent(node, eventName) {
    // Make sure we use the ownerDocument from the provided node to avoid cross-window problems
    var doc, docEvent;
    if (node.ownerDocument) {
        doc = node.ownerDocument;
    } else if (node.nodeType == 9) {
        // the node may be the document itself, nodeType 9 = DOCUMENT_NODE
        doc = node;
    } else {
        throw new Error("Invalid node passed to fireEvent: " + node.id);
    }

    if (node.dispatchEvent) {
        // Gecko-style approach (now the standard) takes more work
        var eventClass = "";
        // Different events have different event classes.
        // If this switch statement can't map an eventName to an eventClass,
        // the event firing is going to fail.
        switch (eventName) {
            case "click": // Dispatching of 'click' appears to not work correctly in Safari. Use 'mousedown' or 'mouseup' instead.
            case "mousedown":
            case "mouseup":
                eventClass = "MouseEvents";
                break;
            case "focus":
            case "change":
            case "blur":
            case "select":
                eventClass = "HTMLEvents";
                break;
            default:
                throw "fireEvent: Couldn't find an event class for event '" + eventName + "'.";
        }
        docEvent = doc.createEvent(eventClass);
        var bubbles = eventName == "change" ? false : true;
        docEvent.initEvent(eventName, bubbles, true); // All events created as bubbling and cancelable.
        docEvent.synthetic = true; // allow detection of synthetic events
        // The second parameter says go ahead with the default action
        node.dispatchEvent(docEvent, true);
    } else if (node.fireEvent) {
        // IE-old school style
        docEvent = doc.createEventObject();
        docEvent.synthetic = true; // allow detection of synthetic events
        node.fireEvent("on" + eventName, docEvent);
    }
}
var $ = dom;


text:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta name="viewport" content="width=device-width"/>
	<title>fixture.html</title>
  	<link rel="stylesheet" href="style.css" />

				Lorem Ipsum Dolor Sit Amet


text:
<!doctype html>

	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<title>AvatarCustomizationParser | pokemongo-data-normalizer</title>
	<meta name="description" content="">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<link rel="stylesheet" href="../assets/css/main.css">

						Search
						<input id="tsd-search-field" type="text" />

Preparing search index...

The search index is not available

					pokemongo-data-normalizer

						Options

								All

Public

Public/Protected

All

							<input type="checkbox" id="tsd-filter-inherited" checked />
							Inherited
							<input type="checkbox" id="tsd-filter-externals" checked />
							Externals
							<input type="checkbox" id="tsd-filter-only-exported" />
							Only exported

					Menu

					Globals

					"src/components/avatar-customization/avatar-customization.parser"

					AvatarCustomizationParser

Class AvatarCustomizationParser

Hierarchy

						AvatarCustomizationParser

Implements

Parser

Index

Properties

regexp

Methods

Parse

is<wbr>Item<wbr>Template<wbr>Avatar<wbr>Costumization

Properties

Private regexp

regexp: RegExp = new RegExp('^(AVATAR_?.*)', 'g')

Defined in src/components/avatar-customization/avatar-customization.parser.ts:7

Methods

Parse

Parse(gameMaster: RootObject): AvatarCustomization[]

Implementation of Parser.Parse

Defined in src/components/avatar-customization/avatar-customization.parser.ts:11

Parameters

gameMaster: RootObject

Returns AvatarCustomization[]

Private is<wbr>Item<wbr>Template<wbr>Avatar<wbr>Costumization

is<wbr>Item<wbr>Template<wbr>Avatar<wbr>Costumization(item: ItemTemplate): boolean

Defined in src/components/avatar-customization/avatar-customization.parser.ts:8

Parameters

item: ItemTemplate

Returns boolean

						Globals

						"src/components/avatar-<wbr>customization/avatar-<wbr>customization.parser"

						Avatar<wbr>Customization<wbr>Parser

								regexp

								Parse

								is<wbr>Item<wbr>Template<wbr>Avatar<wbr>Costumization

Legend

Module

Object literal

Variable

Function

Function with type parameter

Index signature

Type alias

Enumeration

Enumeration member

Property

Method

Interface

Interface with type parameter

Constructor

Property

Method

Index signature

Class

Class with type parameter

Constructor

Property

Method

Accessor

Index signature

Inherited constructor

Inherited property

Inherited method

Inherited accessor

Protected property

Protected method

Protected accessor

Private property

Private method

Private accessor

Static property

Static method

Generated using TypeDoc


text:
<component name="InspectionProjectProfileManager">
  <profile version="1.0">
    <option name="myName" value="Project Default" />
    <inspection_tool class="DefaultFileTemplate" enabled="false" level="WARNING" enabled_by_default="false">
      <option name="CHECK_FILE_HEADER" value="true" />
      <option name="CHECK_TRY_CATCH_SECTION" value="true" />
      <option name="CHECK_METHOD_BODY" value="true" />
    </inspection_tool>
    <inspection_tool class="LoggerInitializedWithForeignClass" enabled="false" level="WARNING" enabled_by_default="false">
      <option name="loggerClassName" value="org.apache.log4j.Logger,org.slf4j.LoggerFactory,org.apache.commons.logging.LogFactory,java.util.logging.Logger" />
      <option name="loggerFactoryMethodName" value="getLogger,getLogger,getLog,getLogger" />
    </inspection_tool>
    <inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
      <option name="processCode" value="true" />
      <option name="processLiterals" value="true" />
      <option name="processComments" value="true" />
    </inspection_tool>
  </profile>
</component>


text:
package com.java.door;

/**
 * Created by Intellij IDEA Author: lizhiyong E-mail: lizhiyong@xiaomi.com Time:
 * 17-2-13 上午10:09
 */
public class AlarmDoor extends Door implements Alarm {
    @Override
    void open() {

    }

    @Override
    void close() {

    }

    public void alarm() {
    }
}


text:
use strict;
use CXGN::Page;
my $page=CXGN::Page->new('lg6.html','html2pl converter');
$page->header('Pepper Linkage Group 6');
print<<END_HEREDOC;

Linkage Group 6

END_HEREDOC
$page->footer();


text:
            <button ng-if="page.curr !== 'login'" type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
                Toggle navigation

            </button>

                    Home

                    User

                    Bundle

                    Logout


text:
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TupleSections #-}

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-ipv6add.html

module Stratosphere.ResourceProperties.EC2LaunchTemplateIpv6Add where

import Stratosphere.ResourceImports

-- | Full data type definition for EC2LaunchTemplateIpv6Add. See
-- 'ec2LaunchTemplateIpv6Add' for a more convenient constructor.
data EC2LaunchTemplateIpv6Add =
  EC2LaunchTemplateIpv6Add
  { _eC2LaunchTemplateIpv6AddIpv6Address :: Maybe (Val Text)
  } deriving (Show, Eq)

instance ToJSON EC2LaunchTemplateIpv6Add where
  toJSON EC2LaunchTemplateIpv6Add{..} =
    object $
    catMaybes
    [ fmap (("Ipv6Address",) . toJSON) _eC2LaunchTemplateIpv6AddIpv6Address
    ]

-- | Constructor for 'EC2LaunchTemplateIpv6Add' containing required fields as
-- arguments.
ec2LaunchTemplateIpv6Add
  :: EC2LaunchTemplateIpv6Add
ec2LaunchTemplateIpv6Add  =
  EC2LaunchTemplateIpv6Add
  { _eC2LaunchTemplateIpv6AddIpv6Address = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-ipv6add.html#cfn-ec2-launchtemplate-ipv6add-ipv6address
ecltiaIpv6Address :: Lens' EC2LaunchTemplateIpv6Add (Maybe (Val Text))
ecltiaIpv6Address = lens _eC2LaunchTemplateIpv6AddIpv6Address (\s a -> s { _eC2LaunchTemplateIpv6AddIpv6Address = a })


text:
namespace java {
  namespace util {
    class Set;
    class Iterator;
    class Collection;
  }
  namespace lang {
    class Throwable;
    class Class;
  }
}
template<class T> class JArray;

namespace org {
  namespace apache {
    namespace pylucene {
      namespace util {

        class PythonSet : public ::java::lang::Object {
        public:
          enum {
            mid_init$_54c6a166,
            mid_add_290588e2,
            mid_addAll_9bfb3701,
            mid_clear_54c6a166,
            mid_contains_290588e2,
            mid_containsAll_9bfb3701,
            mid_equals_290588e2,
            mid_finalize_54c6a166,
            mid_isEmpty_54c6a16a,
            mid_iterator_40858c90,
            mid_pythonDecRef_54c6a166,
            mid_pythonExtension_54c6a17a,
            mid_pythonExtension_0ee6df2f,
            mid_remove_290588e2,
            mid_removeAll_9bfb3701,
            mid_retainAll_9bfb3701,
            mid_size_54c6a179,
            mid_toArray_94e49c77,
            mid_toArray_ae67dbcf,
            max_mid
          };

          static ::java::lang::Class *class$;
          static jmethodID *mids$;
          static bool live$;
          static jclass initializeClass(bool);

          explicit PythonSet(jobject obj) : ::java::lang::Object(obj) {
            if (obj != NULL)
              env->getClass(initializeClass);
          }
          PythonSet(const PythonSet& obj) : ::java::lang::Object(obj) {}

          PythonSet();

          jboolean add(const ::java::lang::Object &) const;
          jboolean addAll(const ::java::util::Collection &) const;
          void clear() const;
          jboolean contains(const ::java::lang::Object &) const;
          jboolean containsAll(const ::java::util::Collection &) const;
          jboolean equals(const ::java::lang::Object &) const;
          void finalize() const;
          jboolean isEmpty() const;
          ::java::util::Iterator iterator() const;
          void pythonDecRef() const;
          jlong pythonExtension() const;
          void pythonExtension(jlong) const;
          jboolean remove(const ::java::lang::Object &) const;
          jboolean removeAll(const ::java::util::Collection &) const;
          jboolean retainAll(const ::java::util::Collection &) const;
          jint size() const;
          JArray< ::java::lang::Object > toArray() const;
          JArray< ::java::lang::Object > toArray(const JArray< ::java::lang::Object > &) const;
        };
      }
    }
  }
}

#include <Python.h>

namespace org {
  namespace apache {
    namespace pylucene {
      namespace util {
        extern PyTypeObject PY_TYPE(PythonSet);

        class t_PythonSet {
        public:
          PyObject_HEAD
          PythonSet object;
          static PyObject *wrap_Object(const PythonSet&);
          static PyObject *wrap_jobject(const jobject&);
          static void install(PyObject *module);
          static void initialize(PyObject *module);
        };
      }
    }
  }
}

#endif


text:
VeritasWeb::Application.routes.draw do
  resources :tests

  mount Ckeditor::Engine => '/ckeditor'

  match "login" => "sessions#new", :via => [:get]
  match "login" => "sessions#create", :via => [:post]
  match "logout" => "sessions#destroy"

  resources :sessions
  resources :settings
  resources :contact_queue_items, :path => "contact-queue"
  resources :contacts
  resources :podcasts
  resources :default

  match "/" => "default#index", :as => "default"

  match "podcast" => "podcasts#feed", :defaults => { :format => 'rss' }, :as => "podcast_feed"

  match "attendances/print" => 'attendances#print', :as => "print_attenance"
  match "attendances/:date" => 'attendances#show', :as => "attendances_by_date"
  match "attendances/:date/:contact_id" => 'attendances#update'
  resources :attendances

  resources :signups
  match "signups/:id/signup" => "signups#signup", :as => "user_signup"

  match "tools" => "tools#index"
  match "tools/:action/:type" => "tools#%{action}"
  match "tools/:action" => "tools#%{action}"
  match "tools/text/:type/send" => "tools#text_send"
  match "tools/email/:type/send" => "tools#email_send"

  match "admin" => redirect("/contacts")
  match "mobile" => redirect("/?mobile=1")

  root :to => 'default#index'

  #catch all redirect to root
  match '*path' => redirect('/')   unless Rails.env.development?

  # The priority is based upon order of creation:
  # first created -> highest priority.

  # Sample of regular route:
  #   match 'products/:id' => 'catalog#view'
  # Keep in mind you can assign values other than :controller and :action

  # Sample of named route:
  #   match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
  # This route can be invoked with purchase_url(:id => product.id)

  # Sample resource route (maps HTTP verbs to controller actions automatically):
  #   resources :products

  # Sample resource route with options:
  #   resources :products do
  #     member do
  #       get 'short'
  #       post 'toggle'
  #     end
  #
  #     collection do
  #       get 'sold'
  #     end
  #   end

  # Sample resource route with sub-resources:
  #   resources :products do
  #     resources :comments, :sales
  #     resource :seller
  #   end

  # Sample resource route with more complex sub-resources
  #   resources :products do
  #     resources :comments
  #     resources :sales do
  #       get 'recent', :on => :collection
  #     end
  #   end

  # Sample resource route within a namespace:
  #   namespace :admin do
  #     # Directs /admin/products/* to Admin::ProductsController
  #     # (app/controllers/admin/products_controller.rb)
  #     resources :products
  #   end

  # You can have the root of your site routed with "root"
  # just remember to delete public/index.html.

  # See how all your routes lay out with "rake routes"

  # This is a legacy wild controller route that's not recommended for RESTful applications.
  # Note: This route will make all actions in every controller accessible via GET requests.
  # match ':controller(/:action(/:id))(.:format)'
end


text:
class Merchant < ActiveRecord::Base
  has_many :transactions
  serialize :address
  after_create :fetch_foursquare_id, unless: :foursquare_id?
  validates :mondo_id, :address, :name, :category, presence: true

  CATEGORIES = %i(transport groceries eating_out cash bills entertainment shopping holidays general expenses).freeze

  class << self
    def find_or_create_from_transaction(data)
      find_or_create_by(mondo_id: data[:id]) do |m|
        m.attributes = transform_hash(data).deep_symbolize_keys
      end
    end

    private

    def transform_hash(data)
      data.slice(*allowed_attributes).tap do |d|
        d[:foursquare_id] = data.dig(:metadata, :foursquare_id)
        d[:mondo_id] = data[:id]
      end
    end

    def allowed_attributes
      attribute_names.map(&:to_sym) - [:id]
    end
  end

  private

  def fetch_foursquare_id
    foursquare_search[:venues].each do |venue|
      update_attributes(foursquare_id: venue[:id]) and break if venue.dig(:location, :postalCode) == address[:postcode]
    end
  end

  def foursquare_client
    FoursquareClient.new
  end

  def foursquare_search
    @foursquare_search ||= foursquare_client.search_venues(
      ll: "#{address[:latitude]}, #{address[:longitude]}",
      query: name
    ).deep_symbolize_keys
  end
end


text:
if [[ ${CHEMREAC_CHECK_MASTER:-1} == 1 && $(git rev-parse --abbrev-ref HEAD) != master ]]; then
    echo "We are not on the master branch. Aborting..."
    exit 1
fi
if [[ ! -z $(git status -s) ]]; then
    echo "'git status' show there are some untracked/uncommited changes. Aborting..."
    exit 1
fi


text:
package org.netbeans.editor;

/**
* Names of the base settings defined in the editor. The other packages
* related to the editor can define their own extensions to these basic
* names. The extension class can be inherited from this class
* so that the extension class contains all the available names.
*
* @author Miloslav Metelka
* @version 1.00
*/

public class SettingsNames {

    /** Number of spaces to draw when the '\t' character
    * is found in the text. Better said when the drawing-engine
    * finds a '\t' character it computes the next multiple
    * of TAB_SIZE and continues drawing from that position.
    * Values: java.lang.Integer instances
    */
    public static final String TAB_SIZE = "tab-size"; // NOI18N

    /** Whether expand typed tabs to spaces. The number of spaces to substitute
    * per one typed tab is determined by SPACES_PER_TAB setting.
    * Values: java.lang.Boolean instances
    */
    public static final String EXPAND_TABS = "expand-tabs"; // NOI18N

    /** How many spaces substitute per one typed tab. This parameter has
    * effect only when EXPAND_TABS setting is set to true.
    * This parameter has no influence on how
    * the existing tabs are displayed.
    * Values: java.lang.Integer instances
    */
    public static final String SPACES_PER_TAB = "spaces-per-tab"; // NOI18N

    /** Shift-width says how many spaces should the formatter use
    * to indent the more inner level of code. This setting is independent of <tt>TAB_SIZE</tt>
    * and <tt>SPACES_PER_TAB</tt>.
    * Values: java.lang.Integer instances
    */
    public static final String INDENT_SHIFT_WIDTH = "indent-shift-width"; // NOI18N

    /** Acceptor that recognizes the identifier characters.
    * If set it's used instead of the default Syntax.isIdentifierPart() call.
    * Values: org.netbeans.editor.Acceptor instances
    */
    public static final String IDENTIFIER_ACCEPTOR = "identifier-acceptor"; // NOI18N

    /** Acceptor that recognizes the whitespace characters.
    * If set it's used instead of the default Syntax.isWhitespace() call.
    * Values: org.netbeans.editor.Acceptor instances
    */
    public static final String WHITESPACE_ACCEPTOR = "whitespace-acceptor"; // NOI18N

    /** Map of the string abbreviations. The second string (value) means
    * the full version of the first string (key).
    * Values: java.util.Map instances holding
    *      [abbrev-string, expanded-abbrev-string] pairs
    */
    public static final String ABBREV_MAP = "abbrev-map"; // NOI18N

    /** Map of macro definitions. The second string (value) contains
     * encoded functionality of the macro in the following notation:
     * Macro ::= S? Element (S Element)* S?
     * Element ::= Action | '"' Text '"'
     * Action ::= ( ( ( char - ( S | '\' ) ) | '\\' | ( '\' S ) )+
     * Text ::= ( ( char - ( '"' | '\' ) ) | ( '\"' | '\\' ) )*
    */
    public static final String MACRO_MAP = "macro-map"; // NOI18N

    /** Map of the action abbreviations. The second string (value) is
    * the name of the action to execute. The action must be available
    * in the kit actions. It can be added through <tt>CUSTOM_ACTION_LIST</tt>.
    * The original abbreviation string
    * is first removed from the text before the action is executed.
    * If there is the same abbreviation in the <tt>ABBREV_MAP</tt> map
    * it has a precedence over the <tt>ABBREV_ACTION_MAP</tt>.
    * Values: java.util.Map instances holding
    *   [abbrev-string, name-of-the-action-to-execute] pairs
    */
    public static final String ABBREV_ACTION_MAP = "abbrev-action-map"; // NOI18N

    /** Acceptor checking whether abbreviation should be attempted
    * after the appropriate character was typed.
    * Values: org.netbeans.editor.Acceptor instances
    */
    public static final String ABBREV_EXPAND_ACCEPTOR = "abbrev-expand-acceptor"; // NOI18N

    /** Acceptor checking whether typed character that performed
    * abbreviation expansion should be added to the text or not.
    * Values: org.netbeans.editor.Acceptor instances
    */
    public static final String ABBREV_ADD_TYPED_CHAR_ACCEPTOR
    = "abbrev-add-typed-char-acceptor"; // NOI18N

    /** Acceptor checking whether typed character should reset
    * abbreviation accounting. By default all non-letterOrDigit chars
    * reset the abbreviation accounting.
    * Values: org.netbeans.editor.Acceptor instances
    */
    public static final String ABBREV_RESET_ACCEPTOR = "abbrev-reset-acceptor"; // NOI18N

    /** Type of caret for insert mode.
    * Values: java.lang.String instances
    *   Currently supported types are:
    *     org.netbeans.editor.BaseCaret.LINE_CARET - default 2point caret
    *     org.netbeans.editor.BaseCaret.THIN_LINE_CARET - swing like thin caret
    *     org.netbeans.editor.BaseCaret.BLOCK_CARET - block covering whole character
    */
    public static final String CARET_TYPE_INSERT_MODE = "caret-type-insert-mode"; // NOI18N

    /** Type of caret for over write mode.
    * Values: java.lang.String instances
    *   Currently supported types are:
    *     org.netbeans.editor.BaseCaret.LINE_CARET - default 2point caret
    *     org.netbeans.editor.BaseCaret.THIN_LINE_CARET - swing like thin caret
    *     org.netbeans.editor.BaseCaret.BLOCK_CARET - block covering whole character
    */
    public static final String CARET_TYPE_OVERWRITE_MODE = "caret-type-overwrite-mode"; // NOI18N

    /** Will the insert mode caret be italicized if the underlying font
    * is italic?
    * Values: java.lang.Boolean instances
    */
    public static final String CARET_ITALIC_INSERT_MODE = "caret-italic-insert-mode"; // NOI18N

    /** Will the overwrite mode caret be italicized if the underlying font
    * is italic?
    * Values: java.lang.Boolean instances
    */
    public static final String CARET_ITALIC_OVERWRITE_MODE = "caret-italic-overwrite-mode"; // NOI18N

    /** Caret color for insert mode.
    * Values: java.awt.Color instances
    */
    public static final String CARET_COLOR_INSERT_MODE = "caret-color-insert-mode"; // NOI18N

    /** Caret color for overwrite mode.
    * Values: java.awt.Color instances
    */
    public static final String CARET_COLOR_OVERWRITE_MODE = "caret-color-overwrite-mode"; // NOI18N

    /** Caret blink rate in milliseconds.
    * Values: java.lang.Integer
    */
    public static final String CARET_BLINK_RATE = "caret-blink-rate"; // NOI18N

    /** Whether to display line numbers on the left part of the screen.
    * Values: java.lang.Boolean instances
    */
    public static final String LINE_NUMBER_VISIBLE = "line-number-visible"; // NOI18N

    /** Whether to display line numbers when printing to the printer.
    * Values: java.lang.Boolean instances
    */
    public static final String PRINT_LINE_NUMBER_VISIBLE = "print-line-number-visible"; // NOI18N

    /** How much should the view jump when scrolling goes off the screen.
    * Insets are used so that it can be specified for each direction specifically.
    * Each inset value can be positive or negative. The positive value means
    * the number of lines for the top and the bottom and the number of characters
    * for the left and the right. The negative value means percentage of the editor
    * component height for the top and the bottom and percentage of the editor
    * component width for the left and the right.
    * Values: java.awt.Insets instances
    */
    public static final String SCROLL_JUMP_INSETS = "scroll-jump-insets"; // NOI18N

    /** How much space must be reserved in each direction for the find operation.
    * It's here to ensure the found information will be visible in some
    * context around it.
    * Insets are used so that it can be specified for each direction specifically.
    * Each inset value can be positive or negative. The positive value means
    * the number of lines for the top and the bottom and the number of characters
    * for the left and the right. The negative value means percentage of the editor
    * component height for the top and the bottom and percentage of the editor
    * component width for the left and the right.
    * Values: java.awt.Insets instances
    */
    public static final String SCROLL_FIND_INSETS = "scroll-find-insets"; // NOI18N

    /** How much space will be added additionaly when the component needs to be
    * resized.
    * Each dimension value can be positive or negative. The positive value means
    * the number of lines for the height and the number of characters
    * for the width. The negative value means percentage of the editor
    * component height for the height and percentage of the editor
    * component width for the width.
    * Values: java.awt.Dimension instances
    */
    public static final String COMPONENT_SIZE_INCREMENT = "component-size-increment"; // NOI18N

    /** Margin for the editor component
    * Values: java.awt.Insets instances
    */
    public static final String MARGIN = "margin"; // NOI18N

    /** Margin on the left and right side of the line number.
    * It's used only when line numbers are visible. The top and bottom values
    * are ignored.
    * Values: java.awt.Insets instances
    */
    public static final String LINE_NUMBER_MARGIN = "line-number-margin"; // NOI18N

    /** Width of the margin on the left side of the text just after the line-number bar.
    * Values: java.awt.Integer instances
    */
    public static final String TEXT_LEFT_MARGIN_WIDTH = "text-left-margin-width"; // NOI18N

    /** Rendering hints to be used for the painting.
    * Values: java.util.Map instances
    */
    public static final String RENDERING_HINTS = "rendering-hints"; // NOI18N

    /** Key binding list for particular kit.
    * Values: java.util.List instances holding
    *   javax.swing.JTextComponent.KeyBinding instances
    *   or org.netbeans.editor.MultiKeyBinding instances
    */
    public static final String KEY_BINDING_LIST = "key-bindings"; // NOI18N

    /** Whether the input-methods should be enabled.
    * Values: java.lang.Boolean
    */
    public static final String INPUT_METHODS_ENABLED = "input-methods-enabled"; // NOI18N

    /** Float constant by which the height of the character obtained from
    * the font is multiplied. It defaults to 1.
    * Values: java.lang.Float instances
    */
    public static final String LINE_HEIGHT_CORRECTION = "line-height-correction"; // NOI18N

    /* Find properties.
    * They are read by FindSupport when its instance is being initialized.
    * FIND_WHAT: java.lang.String - search expression
    * FIND_REPLACE_BY: java.lang.String - replace string
    * FIND_HIGHLIGHT_SEARCH: java.lang.Boolean - highlight matching strings in text
    * FIND_INC_SEARCH: java.lang.Boolean - show matching strings immediately
    * FIND_BACKWARD_SEARCH: java.lang.Boolean - search in backward direction
    * FIND_WRAP_SEARCH: java.lang.Boolean - if end of doc reached, start from begin
    * FIND_MATCH_CASE: java.lang.Boolean - match case of letters
    * FIND_SMART_CASE: java.lang.Boolean - case insensitive search if FIND_MATCH_CASE
    *   is false and all letters of FIND_WHAT are small, case sensitive otherwise
    * FIND_WHOLE_WORDS: java.lang.Boolean - match only whole words
    * FIND_REG_EXP: java.lang.Boolean - use regular expressions in search expr
    * FIND_HISTORY: java.util.List - History of search expressions
    * FIND_HISTORY_SIZE: java.lang.Integer - Maximum size of the history
    */
    public static final String FIND_WHAT = "find-what"; // NOI18N
    public static final String FIND_REPLACE_WITH = "find-replace-with"; // NOI18N
    public static final String FIND_HIGHLIGHT_SEARCH = "find-highlight-search"; // NOI18N
    public static final String FIND_INC_SEARCH = "find-inc-search"; // NOI18N
    public static final String FIND_INC_SEARCH_DELAY = "find-inc-search-delay"; // NOI18N
    public static final String FIND_BACKWARD_SEARCH = "find-backward-search"; // NOI18N
    public static final String FIND_WRAP_SEARCH = "find-wrap-search"; // NOI18N
    public static final String FIND_MATCH_CASE = "find-match-case"; // NOI18N
    public static final String FIND_SMART_CASE = "find-smart-case"; // NOI18N
    public static final String FIND_WHOLE_WORDS = "find-whole-words"; // NOI18N
    public static final String FIND_REG_EXP = "find-reg-exp"; // NOI18N
    public static final String FIND_HISTORY = "find-history"; // NOI18N
    public static final String FIND_HISTORY_SIZE = "find-history-size"; // NOI18N

    /** Number of characters that can be searched. If the value is larger
    * than the document size, the document is used but the next document
    * will not be used. The zero value disables the word match completely.
    * Specify Integer.MAX_VALUE to search all the documents regardless
    * of the size.
    * Values: java.lang.Integer instances
    */
    public static final String WORD_MATCH_SEARCH_LEN = "word-match-search-len"; // NOI18N

    /** Wrap the word match searching
    * on current document after it reaches the end/begining of
    * current document. All the other documents except the current (first) one
    * are searched from begining in forward direction.
    * Values: java.lang.Boolean instances
    */
    public static final String WORD_MATCH_WRAP_SEARCH = "word-match-wrap-search"; // NOI18N

    /** Word list that is searched as last resort in word matching.
    * It can contain the words that are used often by the user.
    * If this property is set, these words are searched regardless
    * of WORD_MATCH_SEARCH_LEN setting.
    * Values: java.lang.String instances
    */
    public static final String WORD_MATCH_STATIC_WORDS = "word-match-static-words"; // NOI18N

    /** Whether to use case sensitive search or not.
    * Values: java.lang.Boolean instances
    */
    public static final String WORD_MATCH_MATCH_CASE = "word-match-match-case"; // NOI18N

    /** Whether to use case insensitive search if all the letters are small
    * and case sensitive search if at least one letter is capital.
    * Values: java.lang.Boolean instances
    */
    public static final String WORD_MATCH_SMART_CASE = "word-match-smart-case"; // NOI18N

    /** Whether the word matching should return the match even if the matching
    * word has only one char. The WORD_MATCH_MATCH_CASE setting is ignored
    * in case this setting is on.
    * Values: java.lang.Boolean instances
    */
    public static final String WORD_MATCH_MATCH_ONE_CHAR = "word-match-match-one-char"; // NOI18N

    /** List of actions that will be added to the standard list of actions
    * for the particular kit. Using this mechanism, user can add actions
    * and possibly map them to the keys without overriding kit classes.
    * NOTICE!: This option has INCREMENTAL HANDLING, i.e. current kit list but also
    * all the super kit lists are used. For example if there is a list of actions
    * both for JavaKit and BaseKit classes, both list of actions will be added
    * and BaseKit actions will be added first.
    * Values: java.util.List instances
    */
    public static final String CUSTOM_ACTION_LIST = "custom-action-list"; // NOI18N

    /** List of actions which is executed when
    * editor kit is installed into component. Actions are executed one by one
    * in the order they occur in the list.
    * At the time the kit is installed, the document is not yet assigned.
    * To perform some actions on document, use the DOC_INSTALL_ACTION_LIST.
    * NOTICE!: This option has INCREMENTAL HANDLING, i.e. current kit list but also
    * all the super kit lists are used. For example if there is a list of actions
    * both for JavaKit and BaseKit classes, both list of actions will be executed
    * and JavaKit actions will be executed first.
    * Values: java.util.List instances
    */
    public static final String KIT_INSTALL_ACTION_NAME_LIST = "kit-install-action-name-list"; // NOI18N

    /** List of actions that are executed when
    * editor kit is being removed from component. Actions are executed one by one
    * in the order they occur in the list.
    * NOTICE!: This option has INCREMENTAL HANDLING, i.e. current kit list but also
    * all the super kit lists are used. For example if there is a list of actions
    * both for JavaKit and BaseKit classes, both list of actions will be executed
    * and JavaKit actions will be executed first.
    * Values: java.util.List instances
    */
    public static final String KIT_DEINSTALL_ACTION_NAME_LIST = "kit-deinstall-action-name-list"; // NOI18N

    /** List of actions which is executed when
    * the new document is installed into component. Actions are executed one by one
    * in the order they occur in the list.
    * NOTICE!: This option has INCREMENTAL HANDLING, i.e. current kit list but also
    * all the super kit lists are used. For example if there is a list of actions
    * both for JavaKit and BaseKit classes, both list of actions will be executed
    * and JavaKit actions will be executed first.
    * Values: java.util.List instances
    */
    public static final String DOC_INSTALL_ACTION_NAME_LIST = "doc-install-action-name-list"; // NOI18N

    /** Whether status bar should be visible or not.
    * Values: java.lang.Boolean instances
    */
    public static final String STATUS_BAR_VISIBLE = "status-bar-visible"; // NOI18N

    /** Delay for updating information about caret in the status bar.
    * Values: java.lang.Integer instances
    */
    public static final String STATUS_BAR_CARET_DELAY = "status-bar-caret-delay"; // NOI18N

    /** Whether the line displaying the text limit should be displayed.
    * Values: java.lang.Boolean instances
    */
    public static final String TEXT_LIMIT_LINE_VISIBLE = "text-limit-line-visible"; // NOI18N

    /** Which color should be used for the line showing the text limit.
    * Values: java.awt.Color instances
    */
    public static final String TEXT_LIMIT_LINE_COLOR = "text-limit-line-color"; // NOI18N

    /** After how many characters the text limit line should be displayed.
    * Values: java.awt.Integer instances
    */
    public static final String TEXT_LIMIT_WIDTH = "text-limit-width"; // NOI18N

    /** Whether the home key should go to column 1 or first go to text start
    * on the given line and then to the column 1.
    * Values: java.lang.Boolean
    * @deprecated As of 05/09/2001
    */
    public static final String HOME_KEY_COLUMN_ONE = "home-key-column-one"; // NOI18N

    /** Finder for finding the next word. If it's not set,
    * the <tt>FinderFactory.NextWordFwdFinder</tt> is used.
    * Values: org.netbeans.editor.Finder
    */
    public static final String NEXT_WORD_FINDER = "next-word-finder"; // NOI18N

    /** Finder for finding the previous word. If it's not set,
    * the <tt>FinderFactory.WordStartBwdFinder</tt> is used.
    * Values: org.netbeans.editor.Finder
    */
    public static final String PREVIOUS_WORD_FINDER = "previous-word-finder"; // NOI18N

    /** Whether the word move should stop on the '\n' character. This setting
    * affects both the
    * Values: java.lang.Boolean
    */
    public static final String WORD_MOVE_NEWLINE_STOP = "word-move-newline-stop"; // NOI18N

    /** Whether to trim the white space characters (except '\n') from
    * the end of the line.
    * Values: java.lang.Boolean instances
    */
    //  public static final String TRIM_SPACES = "trim-spaces"; // NOI18N

    /** Buffer size for reading into the document from input stream or reader.
    * Values: java.lang.Integer
    * WARNING! This is critical parameter for editor functionality.
    * Please see DefaultSettings.java for values of this setting
    */
    public static final String READ_BUFFER_SIZE = "read-buffer-size"; // NOI18N

    /** Buffer size for writing from the document to output stream or writer.
    * Values: java.lang.Integer instances
    * WARNING! This is critical parameter for editor functionality.
    * Please see DefaultSettings.java for values of this setting
    */
    public static final String WRITE_BUFFER_SIZE = "write-buffer-size"; // NOI18N

    /** Read mark distance is used when performing initial read
    * of the document. It denotes the distance in chars of two adjacent
    * syntax marks inserted into the document.
    * Values: java.lang.Integer instances
    * WARNING! This is critical parameter for editor functionality.
    * Please see DefaultSettings.java for values of this setting
    */
    public static final String READ_MARK_DISTANCE = "read-mark-distance"; // NOI18N

    /** Implicit mark distance for inserting to the document.
    * If the insert is made then the distance between nearest syntax
    * marks around insertion point is checked and if it's greater
    * than the max mark distance then another mark(s) are inserted
    * automatically with the distance given by this setting.
    * Values: java.lang.Integer instances instances
    * WARNING! This is critical parameter for editor functionality.
    * Please see DefaultSettings.java for values of this setting
    */
    public static final String MARK_DISTANCE = "mark-distance"; // NOI18N

    /** Maximum mark distance. When there is an insertion done in document
    * and the distance between marks gets greater than this setting, another
    * mark will be inserted automatically.
    * Values: java.lang.Integer instances
    * WARNING! This is critical parameter for editor functionality.
    * Please see DefaultSettings.java for values of this setting
    */
    public static final String MAX_MARK_DISTANCE = "max-mark-distance"; // NOI18N

    /** Minimum mark distance for removals. When there is a removal done
    * in document and it makes the marks to get closer than this value, then
    * the marks the additional marks that are closer than the distance
    * given by this setting are removed automatically.
    * Values: java.lang.Integer instances
    * WARNING! This is critical parameter for editor functionality.
    * Please see DefaultSettings.java for values of this setting
    */
    public static final String MIN_MARK_DISTANCE = "min-mark-distance"; // NOI18N

    /** Size of one batch of characters loaded into syntax segment
    * when updating syntax marks. It prevents checking and loading
    * of syntax segment at every syntax mark. Instead it loads
    * at least the amount of characters given by this setting.
    * This whole process is done only in case the changes in syntax
    * extend the end of current line. If the syntax changes don't
    * extend to the next line, this setting has no effect.
    * Values: java.lang.Integer instances
    * WARNING! This is critical parameter for editor functionality.
    * Please see DefaultSettings.java for values of this setting
    */
    public static final String SYNTAX_UPDATE_BATCH_SIZE = "syntax-update-batch-size"; // NOI18N

    /** How many lines should be processed at once in the various text
    * processing. This is used for example when processing the text
    * by syntax scanner.
    */
    public static final String LINE_BATCH_SIZE = "line-batch-size"; // NOI18N

    /** Ignore the changes made to the settings through the visual property editors
    * working over the methods manipulating the settings. Generally there can be
    * two ways to change the settings in the IDE. One way is to directly
    * call the appropriate methods. The other way can be through some visual
    * property editors. This flag should be checked by the property editors
    * and if set to true, no changes to the settings should be performed.
    * This allows advanced users to completely control the settings through code
    * without any external undesired changes.
    */
    public static final String IGNORE_VISUAL_CHANGES = "ignore-visual-changes";

    /** List of the names of the additional colorings that need to be taken
    * into account for the particular kit. The colorings that come from
    * syntax coloring need not be specified here. Instead
    * the <tt>TOKEN_CONTEXT_LIST</tt> holds the list of token contexts
    * that can be used by the given kit.
    * The coloring names are without the suffix just like the predefined coloring names.
    * Values: java.util.List instances
    */
    public static final String COLORING_NAME_LIST = "coloring-name-list"; // NOI18N

    /** The list of the token contexts that the kit can use.
    * The editor-ui uses this setting to determine all the token-ids
    * and token-categories for the colorings.
    */
    public static final String TOKEN_CONTEXT_LIST = "token-context-list"; // NOI18N

    /** Suffix added to the coloring settings. The resulting name is used
    * as the name of the setting.
    */
    public static final String COLORING_NAME_SUFFIX = "-coloring"; // NOI18N

    /** Suffix added to the print coloring settings. The resulting name is used
    * as the name of the setting.
    */
    public static final String COLORING_NAME_PRINT_SUFFIX = "-print-coloring"; // NOI18N

    /** Default coloring for the drawing. */
    public static final String DEFAULT_COLORING = "default"; // NOI18N

    /** Coloring that will be used for line numbers displayed on the left
    * side on the screen.
    */
    public static final String LINE_NUMBER_COLORING = "line-number"; // NOI18N

    /** Coloring used for guarded blocks */
    public static final String GUARDED_COLORING = "guarded"; // NOI18N

    /** Coloring used for selection */
    public static final String SELECTION_COLORING = "selection"; // NOI18N

    /** Coloring used for highlight search */
    public static final String HIGHLIGHT_SEARCH_COLORING = "highlight-search"; // NOI18N

    /** Coloring used for incremental search */
    public static final String INC_SEARCH_COLORING = "inc-search"; // NOI18N

    /** Coloring used for bookmark lines */
    public static final String BOOKMARK_COLORING = "bookmark"; // NOI18N

    /** Coloring used for the status bar */
    public static final String STATUS_BAR_COLORING = "status-bar"; // NOI18N

    /** Coloring used to mark important text in the status bar */
    public static final String STATUS_BAR_BOLD_COLORING = "status-bar-bold"; // NOI18N

}


text:
package org.apache.camel.component.jcache.policy;

import javax.cache.Cache;

import org.apache.camel.component.jcache.support.HazelcastTest;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.spring.junit5.CamelSpringTestSupport;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.context.support.AbstractApplicationContext;

import static org.apache.camel.component.jcache.policy.JCachePolicyTestBase.generateValue;
import static org.apache.camel.component.jcache.policy.JCachePolicyTestBase.lookupCache;
import static org.apache.camel.component.jcache.policy.JCachePolicyTestBase.randomString;
import static org.junit.jupiter.api.Assertions.assertEquals;

@HazelcastTest
public class SpringJCachePolicyTest extends CamelSpringTestSupport {

    @Override
    protected AbstractApplicationContext createApplicationContext() {
        return newAppContext("/org/apache/camel/component/jcache/policy/SpringJCachePolicyTest.xml");
    }

    @BeforeEach
    public void before() {
        //reset mock
        MockEndpoint mock = getMockEndpoint("mock:spring");
        mock.reset();
        mock.whenAnyExchangeReceived(e -> e.getMessage().setBody(generateValue(e.getMessage().getBody(String.class))));
    }

    //Verify value gets cached and route is not executed for the second time
    @Test
    public void testXmlDslValueGetsCached() throws Exception {
        final String key = randomString();
        MockEndpoint mock = getMockEndpoint("mock:spring");

        //Send first, key is not in cache
        Object responseBody = this.template().requestBody("direct:spring", key);

        //We got back the value, mock was called once, value got cached.
        Cache cache = lookupCache("spring");
        assertEquals(generateValue(key), cache.get(key));
        assertEquals(generateValue(key), responseBody);
        assertEquals(1, mock.getExchanges().size());

        //Send again, key is already in cache
        responseBody = this.template().requestBody("direct:spring", key);

        //We got back the stored value, but the mock was not called again
        assertEquals(generateValue(key), cache.get(key));
        assertEquals(generateValue(key), responseBody);
        assertEquals(1, mock.getExchanges().size());
    }

    //Verify if we call the route with different keys, both gets cached
    @Test
    public void testXmlDslDifferent() throws Exception {
        final String key1 = randomString();
        MockEndpoint mock = getMockEndpoint("mock:spring");

        //Send first, key is not in cache
        Object responseBody = this.template().requestBody("direct:spring", key1);

        //We got back the value, mock was called once, value got cached.
        Cache cache = lookupCache("spring");
        assertEquals(generateValue(key1), cache.get(key1));
        assertEquals(generateValue(key1), responseBody);
        assertEquals(1, mock.getExchanges().size());

        //Send again, different key
        final String key2 = randomString();
        responseBody = this.template().requestBody("direct:spring", key2);

        //We got back the stored value, mock was called again, value got cached.
        assertEquals(generateValue(key2), cache.get(key2));
        assertEquals(generateValue(key2), responseBody);
        assertEquals(2, mock.getExchanges().size());
    }

    //Verify policy applies only on the section of the route wrapped
    @Test
    public void testXmlDslPartial() throws Exception {
        final String key = randomString();
        MockEndpoint mock = getMockEndpoint("mock:spring");
        MockEndpoint mockUnwrapped = getMockEndpoint("mock:unwrapped");

        //Send first, key is not in cache
        Object responseBody = this.template().requestBody("direct:spring-partial", key);

        //We got back the value, mock was called once, value got cached.
        Cache cache = lookupCache("spring");
        assertEquals(generateValue(key), cache.get(key));
        assertEquals(generateValue(key), responseBody);
        assertEquals(1, mock.getExchanges().size());
        assertEquals(1, mockUnwrapped.getExchanges().size());

        //Send again, key is already in cache
        responseBody = this.template().requestBody("direct:spring-partial", key);

        //We got back the stored value, but the mock was not called again
        assertEquals(generateValue(key), cache.get(key));
        assertEquals(generateValue(key), responseBody);
        assertEquals(1, mock.getExchanges().size());
        assertEquals(2, mockUnwrapped.getExchanges().size());
    }

    //Use a key expression ${header.mykey}
    @Test
    public void testXmlDslKeyExpression() throws Exception {
        final String key = randomString();
        final String body = randomString();
        MockEndpoint mock = getMockEndpoint("mock:spring");

        //Send first, key is not in cache
        Object responseBody = this.template().requestBodyAndHeader("direct:spring-byheader", body, "mykey", key);

        //We got back the value, mock was called once, value got cached.
        Cache cache = lookupCache("spring");
        assertEquals(generateValue(body), cache.get(key));
        assertEquals(generateValue(body), responseBody);
        assertEquals(1, mock.getExchanges().size());

        //Send again, use another body, but the same key
        responseBody = this.template().requestBodyAndHeader("direct:spring-byheader", randomString(), "mykey", key);

        //We got back the stored value, and the mock was not called again
        assertEquals(generateValue(body), cache.get(key));
        assertEquals(generateValue(body), responseBody);
        assertEquals(1, mock.getExchanges().size());

    }

}