반응형

scheduler2.zip

압축파일 비밀번호 링크 : http://blog.naver.com/1xx707xx1/220722393843


스케쥴(일정 관리)프로그램1의 업그레이드 버전입니다.

스프링 MVC모델로 나눴습니다.




============================================================================================

[SchedulerController.java]


@Controller

public class SchedulerController {


@Autowired

SchedulerService schedulerService;

    public static String date_format = "MM/dd/yyyy HH:mm";

    public static String filter_format = "yyyy-MM-dd";

    public DHXSecurity security;

    private HashMap attributes;

    private Date from;

    private Date to;

    private Boolean dynFilter;

    HttpServletRequest request;

   @RequestMapping("/scheduler")

   public String scheduler(ModelMap model, HttpServletRequest request) throws Exception {

  

  DHXPlanner planner = new DHXPlanner("./codebase/", DHXSkin.TERRACE);

  planner.localizations.set("cr");

  planner.setWidth(900);


  planner.config.setFirstHour(9);

  planner.config.setLastHour(19);

  

  planner.data.dataprocessor.setURL("events.do");

  planner.parse(schedulerService.getEvent());

  model.addAttribute("schedule", planner.render());

  

      return "scheduler";

   }

   

   @RequestMapping("/events")

   @ResponseBody 

   public String events(HttpServletRequest request) throws Exception {

  

       String value = request.getParameter("ids");

       String actions = "";

       if(value != null)

       {

           String ids[] = value.split(",");

           for(int i = 0; i < ids.length; i++)

               actions = (new StringBuilder()).append(actions).append(saveOne(request, ids[i], (new StringBuilder()).append(ids[i]).append("_").toString())).toString();


       } else

       {

           value = request.getParameter("id");

           if(value != null)

               actions = (new StringBuilder()).append(actions).append(saveOne(request, value, "")).toString();

       }

       return (new StringBuilder()).append("<?xml version=\"1.0\"?><data>").append(actions).append("</data>").toString();   

   }

   

   private String saveOne(HttpServletRequest request, String id, String prefix)

   {

   security = new DHXSecurity();

   attributes = new HashMap();

   from = null;

   to = null;

   dynFilter = Boolean.valueOf(true);

  

       String st = request.getParameter((new StringBuilder()).append(prefix).append("!nativeeditor_status").toString());

       DHXStatus status = DHXStatus.UNKNOWN;

       if(st.equals("insert") || st.equals("inserted"))

           status = DHXStatus.INSERT;

       else

       if(st.equals("update") || st.equals("updated"))

           status = DHXStatus.UPDATE;

       else

       if(st.equals("delete") || st.equals("deleted"))

           status = DHXStatus.DELETE;

       DHXEv ev = createEvent(id, status);

       attributes.clear();

       if(security.can(status).booleanValue())

       {

           Method m[] = ev.getClass().getMethods();

           for(int i = 0; i < m.length; i++)

           {

               String name = m[i].getName();

               if(status == DHXStatus.INSERT && name.equals("setId") || !name.startsWith("set"))

                   continue;

               String param = toLowerCase(name.substring(3));

               String value = request.getParameter((new StringBuilder()).append(prefix).append(param).toString());

               if(value == null)

                   continue;

               Class t[] = new Class[1];

               t[0] = java.lang.String.class;

               Method method = null;

               try

               {

                   method = ev.getClass().getMethod(name, t);

               }

               catch(NoSuchMethodException e)

               {

                   e.printStackTrace();

               }

               catch(SecurityException e)

               {

                   e.printStackTrace();

               }

               try

               {

                   method.invoke(ev, new Object[] {

                       value

                   });

               }

               catch(IllegalAccessException e)

               {

                   e.printStackTrace();

               }

               catch(IllegalArgumentException e)

               {

                   e.printStackTrace();

               }

               catch(InvocationTargetException e)

               {

                   e.printStackTrace();

               }

           }


           status = saveEvent(ev, status);

       } else

       {

           status = DHXStatus.ERROR;

       }

       if(status == DHXStatus.UPDATE)

           st = "update";

       else

       if(status == DHXStatus.DELETE)

           st = "delete";

       else

       if(status == DHXStatus.INSERT)

           st = "inserted";

       else

       if(status == DHXStatus.ERROR)

           st = "error";

       String attrs = "";

       Set keys = attributes.keySet();

       for(Iterator i$ = keys.iterator(); i$.hasNext();)

       {

           String key = (String)i$.next();

           attrs = (new StringBuilder()).append(attrs).append(" ").append(key).append("=\"").append((String)attributes.get(key)).append("\"").toString();

       }


       return (new StringBuilder()).append("<action type=\"").append(st).append("\" sid=\"").append(id).append("\" tid=\"").append(ev.getId()).append("\"").append(attrs).append(" />").toString();

   }


   private String toLowerCase(String value)

   {

       String first = value.substring(0, 1);

       String last = value.substring(1);

       return (new StringBuilder()).append(first.toLowerCase()).append(last).toString();

   }

   

  public DHXEv createEvent(String id, DHXStatus status) {

      return new DHXEvent();

}

 

    public DHXStatus saveEvent(DHXEv event, DHXStatus status) {


String start_date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(event.getStart_date());

String end_date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(event.getEnd_date());

                   

SchedulerVO schedule = new SchedulerVO();

schedule.setEvent_name(event.getText());

schedule.setStart_date(start_date);

schedule.setEnd_date(end_date);

schedule.setEvent_id(event.getId());

                   

        if (status == DHXStatus.UPDATE) {

        schedulerService.updateEvent(schedule);


        } else if (status == DHXStatus.INSERT) {

        schedulerService.insertEvent(schedule);

        event.setId(schedule.getEvent_id());


        } else if (status == DHXStatus.DELETE) {

        schedulerService.deleteEvent(event.getId());

 

        }


      return status;

}

   

    protected void parseRequest()

    {

        if(request == null)

            return;

        String fromValue = request.getParameter("from");

        String toValue = request.getParameter("to");

        try

        {

            if(fromValue != null)

                from = (new SimpleDateFormat(filter_format)).parse(fromValue);

            if(toValue != null)

                to = (new SimpleDateFormat(filter_format)).parse(toValue);

        }

        catch(ParseException e)

        {

            e.printStackTrace();

        }

    }


    protected Boolean filterEvent(DHXEv ev)

    {

        if(!dynFilter.booleanValue())

            return Boolean.valueOf(true);

        if(from == null && to == null)

            return Boolean.valueOf(true);

        if(from != null && !ev.getStart_date().after(from))

            return Boolean.valueOf(false);

        if(to != null && !ev.getEnd_date().before(to))

            return Boolean.valueOf(false);

        else

            return Boolean.valueOf(true);

    }


    public Date getFilterFrom()

    {

        return from;

    }


    public Date getFilterTo()

    {

        return to;

    }


    public void setDynFilter(Boolean value)

    {

        dynFilter = value;

    }


    public Date getFrom()

    {

        return from;

    }


    public void setFrom(Date from)

    {

        this.from = from;

    }


    public Date getTo()

    {

        return to;

    }


    public void setTo(Date to)

    {

        this.to = to;

    }


    public Boolean getDynFilter()

    {

        return dynFilter;

    }


    public void addResponseAttribute(String name, String value)

    {

        attributes.put(name, value);

    }

 

}


============================================================================================

[SchedulerService.java]


@Service

public class SchedulerService {

@Autowired

private ShedulerDao eventManagerDao;


public Iterable<DHXEv> getEvent() {

return eventManagerDao.getEvent();

}


public void updateEvent(SchedulerVO schedule) {

eventManagerDao.updateEvent(schedule);

}


public void insertEvent(SchedulerVO schedule) {

eventManagerDao.insertEvent(schedule);

}


public void deleteEvent(Integer id) {

eventManagerDao.deleteEvent(id);

}

}


===============================================================================================

[ShedulerDao.java]


public interface ShedulerDao {


Iterable<DHXEv> getEvent();


void updateEvent(SchedulerVO schedule);


void insertEvent(SchedulerVO schedule);


void deleteEvent(Integer id);

}


===============================================================================================

[SchedulerImple.java]


@Repository

public class SchedulerImple implements ShedulerDao {


@Autowired

SqlMapClientTemplate sqlMapClientTemplate;


@Override

public Iterable<DHXEv> getEvent() {

      DHXEventsManager.date_format = "yyyy-MM-dd HH:mm:ss";

      List evs = new ArrayList();

      

    List<SchedulerVO> resultset = sqlMapClientTemplate.queryForList("scheduler.getEvent");

   

    for(int i = 0; i < resultset.size(); i++){

      DHXEvent e = new DHXEvent();

      e.setId(resultset.get(i).getEvent_id());

          e.setText(resultset.get(i).getEvent_name());

          e.setStart_date(resultset.get(i).getStart_date());

          e.setEnd_date(resultset.get(i).getEnd_date());

      evs.add(e);

    }

      DHXEventsManager.date_format = "MM/dd/yyyy HH:mm";

return evs;

}


@Override

public void updateEvent(SchedulerVO schedule) {

sqlMapClientTemplate.update("scheduler.updateEvent", schedule);

}


@Override

public void insertEvent(SchedulerVO schedule) {

sqlMapClientTemplate.insert("scheduler.insertEvent", schedule);

}


@Override

public void deleteEvent(Integer id) {

sqlMapClientTemplate.delete("scheduler.deleteEvent", id);

}


===============================================================================================

[scheduler.xml]


<sqlMap namespace="scheduler">


 <typeAlias alias="scheduler" type="com.scheduler.SchedulerVO" />

 

 <resultMap id="scheduler" class="scheduler">

  <result property="event_id" column="event_id"/>

  <result property="event_name" column="event_name"/>

  <result property="start_date" column="start_date"/>

  <result property="end_date" column="end_date"/>

 </resultMap>

 

 <select id="getEvent" resultMap="scheduler"> 

  SELECT event_id, event_name, start_date, end_date FROM events

 </select>


 <update id="updateEvent" parameterClass="scheduler"> 

  UPDATE events SET event_name=#event_name#, start_date=#start_date#, end_date=#end_date# WHERE event_id=#event_id#

 </update>

 

 <insert id="insertEvent" parameterClass="scheduler"> 

  INSERT INTO events (event_id, event_name, start_date, end_date) VALUES (null, #event_name#, #start_date#, #end_date#)

  <selectKey keyProperty="event_id" resultClass="Integer">

  SELECT LAST_INSERT_ID()

  </selectKey>

 </insert>

 

  <delete id="deleteEvent" parameterClass="int">

  DELETE FROM events WHERE event_id=#event_id# LIMIT 1

  </delete>

 

</sqlMap>

반응형
Posted by ThinkPad War
,