Java tutorial
/** * Copyright mysoft Limited (c) 2014. All rights reserved. * This software is proprietary to and embodies the confidential * technology of mysoft Limited. Possession, use, or copying * of this software and media is authorized only pursuant to a * valid written license from mysoft or an authorized sublicensor. */ package com.mysoft.b2b.event.scheduler.job; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import com.mysoft.b2b.commons.scheduler.MysoftJob; import com.mysoft.b2b.event.api.app.AppSubscribe; import com.mysoft.b2b.event.api.app.AppSubscribeCriteria; import com.mysoft.b2b.event.api.app.AppSubscribeService; import com.mysoft.b2b.event.api.event.Event; import com.mysoft.b2b.event.api.event.EventCriteria; import com.mysoft.b2b.event.api.event.EventLog; import com.mysoft.b2b.event.api.event.EventLogStatus; import com.mysoft.b2b.event.api.event.EventService; import com.mysoft.b2b.event.api.event.EventStatus; /** * chengp: ???LOG * @version Revision History * <pre> * Author Version Date Changes * chengp 1.0 2014828 Created * * </pre> * @since b2b 2.0.0 */ public class EventJob extends MysoftJob { private static Logger log = Logger.getLogger(EventJob.class); @Autowired private EventService eventService; @Autowired private AppSubscribeService appSubscribeService; @Override public void run() { log.info("???LOG-->......."); //1. ?, List<Event> notExecuteEvents = this.getNotExecuteEvents(); int eventNumber = CollectionUtils.isEmpty(notExecuteEvents) ? 0 : notExecuteEvents.size(); log.info("???LOG-->??" + eventNumber); if (0 == eventNumber) { log.info( "???LOG-->???log?"); return; } //2. app Map<String(eventType),List<AppSubscribe>> List<AppSubscribe> appSubscribes = this.getAppSubscribes(); if (CollectionUtils.isEmpty(appSubscribes)) { log.info("???LOG-->app?"); return; } Map<String, List<AppSubscribe>> subscripeGroup = this.getAppSubGroup(appSubscribes); //3. ??: ?--?log--? for (int i = 0; i < notExecuteEvents.size(); i++) { log.info("???LOG-->" + (i + 1) + "?log"); Event event = notExecuteEvents.get(i); try { //?:?dealing?? this.startToDealJob(event); //?log boolean flag = this.parseLog(event, subscripeGroup.get(event.getTypeCode())); //?:?success?? if (flag) { this.finishToDealJob(true, event, null); } else { this.finishToDealJob(false, event, null); } } catch (Exception e) { this.finishToDealJob(false, event, e); } } log.info("???LOG-->?"); } /** * ?event? * @param */ private List<Event> getNotExecuteEvents() { EventCriteria criteria = new EventCriteria(); criteria.setCurrentPage(1); criteria.setLastDealtTime(new Date()); return eventService.getNotExecuteEvent(criteria); } /** * ?app? * @param */ private List<AppSubscribe> getAppSubscribes() { AppSubscribeCriteria criteria = new AppSubscribeCriteria(); criteria.setOffset(0); criteria.setPageSize(500); criteria = appSubscribeService.getAppSubscribeList(criteria); return criteria.getList(); } /** * ? * @param */ private void updateEvent(Event event, EventStatus status) { if (null != event && null != status) { event.setStatus(status.getValue()); event.setLastDealtTime(new Date()); eventService.updateEvent(event); } } /** * ?log?? * @param event */ private void startToDealJob(Event event) { if (null != event) { this.updateEvent(event, EventStatus.DEALING); } } /** * ?log?? * @param flag * @param event * @param e */ private void finishToDealJob(boolean flag, Event event, Exception e) { if (null != event) { if (flag) { event.setRemark("??!"); this.updateEvent(event, EventStatus.SUCCESS); } else { if (e != null) { if (e.getMessage().length() > 200) { event.setRemark(e.getMessage().substring(0, 200)); } else { event.setRemark(e.getMessage()); } } else { event.setRemark("?!"); } this.updateEvent(event, EventStatus.FAILED); } } } /** * app? * @param list */ private Map<String, List<AppSubscribe>> getAppSubGroup(List<AppSubscribe> appSubscribes) { Map<String, List<AppSubscribe>> group = new HashMap<String, List<AppSubscribe>>(); if (!CollectionUtils.isEmpty(appSubscribes)) { for (AppSubscribe sub : appSubscribes) { if (group.containsKey(sub.getEventTypeCode())) { group.get(sub.getEventTypeCode()).add(sub); } else { List<AppSubscribe> element = new ArrayList<AppSubscribe>(); element.add(sub); group.put(sub.getEventTypeCode(), element); } } } return group; } /** *?log *@param event *@param appSubscribes app? */ private boolean parseLog(Event event, List<AppSubscribe> appSubscribes) { if (!CollectionUtils.isEmpty(appSubscribes)) { for (AppSubscribe sub : appSubscribes) { EventLog eventLog = new EventLog(); eventLog.setCreatedBy(event.getCreatedBy()); eventLog.setCreatedTime(new Date()); eventLog.setEventContent(event.getEventContent()); eventLog.setEventId(event.getEventId()); //eventLog.setRemark(event.getRemark()); //eventLogremark? eventLog.setStatus(EventLogStatus.DEFAULT.getValue()); eventLog.setTypeCode(event.getTypeCode()); eventLog.setAppId(sub.getAppId()); eventService.insertEventLog(eventLog); log.info("???LOG-->?log?ID" + event.getEventId() + " appid:" + sub.getAppId()); } return true; } else { log.info("???LOG-->:" + event.getTypeCode() + ",app???log"); } return false; } }