From 9f69ba2bfe6b75e03f184af97fd86791d72ea888 Mon Sep 17 00:00:00 2001 From: ainilife Date: Wed, 8 May 2013 13:13:28 +0800 Subject: [PATCH] New feature : suspend or resume an abtest --- .../cat/system/page/abtest/Handler.java | 55 ++++++++++++++++++- .../cat/system/page/abtest/Payload.java | 29 ++++++---- .../META-INF/dal/jdbc/abtest-dal.xml | 8 ++- cat-home/src/main/webapp/js/abtestAllTest.js | 33 ++++++++++- .../main/webapp/jsp/system/abtestAllTest.jsp | 18 ++++++ 5 files changed, 127 insertions(+), 16 deletions(-) diff --git a/cat-home/src/main/java/com/dianping/cat/system/page/abtest/Handler.java b/cat-home/src/main/java/com/dianping/cat/system/page/abtest/Handler.java index 558ef06b1..41135f6b6 100644 --- a/cat-home/src/main/java/com/dianping/cat/system/page/abtest/Handler.java +++ b/cat-home/src/main/java/com/dianping/cat/system/page/abtest/Handler.java @@ -9,6 +9,7 @@ import javax.servlet.ServletException; import org.unidal.dal.jdbc.DalException; import org.unidal.lookup.annotation.Inject; +import org.unidal.web.mvc.ErrorObject; import org.unidal.web.mvc.PageHandler; import org.unidal.web.mvc.annotation.InboundActionMeta; import org.unidal.web.mvc.annotation.OutboundActionMeta; @@ -34,7 +35,55 @@ public class Handler implements PageHandler { @PayloadMeta(Payload.class) @InboundActionMeta(name = "abtest") public void handleInbound(Context ctx) throws ServletException, IOException { - // TODO + Payload payload = ctx.getPayload(); + Action action = payload.getAction(); + + if (action == Action.LIST) { + handleStatusChangeActions(ctx); + } + } + + private void handleStatusChangeActions(Context ctx) { + Payload payload = ctx.getPayload(); + ErrorObject error = new ErrorObject("disable"); + String[] ids = payload.getIds(); + + if (ids != null && ids.length != 0) { + for (String id : ids) { + System.out.println("change status for " + id); + try { + int intID = Integer.parseInt(id); + Abtest abtest = m_abtestDao.findByPK(intID, AbtestEntity.READSET_FULL); + + if (payload.getDisableAbtest() == -1) { // suspend + if (!abtest.isDisabled()) { + abtest.setDisabled(true); + m_abtestDao.updateByPK(abtest, AbtestEntity.UPDATESET_DISABLE); + } else { + error.addArgument(id, "Abtest " + id + " has been already suspended!"); + } + } else if (payload.getDisableAbtest() == 1) { // resume + if (abtest.isDisabled()) { + abtest.setDisabled(false); + m_abtestDao.updateByPK(abtest, AbtestEntity.UPDATESET_DISABLE); + } else { + error.addArgument(id, "Abtest " + id + " has been already active!"); + } + } + } catch (NumberFormatException e) { + // do nothing + } catch (DalException e) { + } + } + + if (error.getArguments().isEmpty()) { + ErrorObject success = new ErrorObject("success"); + ctx.addError(success); + } else { + ctx.addError(error); + } + } + } @Override @@ -122,10 +171,10 @@ public class Handler implements PageHandler { int fromIndex = (payload.getPageNum() - 1) * m_pageSize; int toIndex = (fromIndex + m_pageSize) <= totalSize ? (fromIndex + m_pageSize) : totalSize; - for(int i = fromIndex ; i < toIndex ; i++){ + for (int i = fromIndex; i < toIndex; i++) { reports.add(new ABTestReport(entities.get(i), now)); } - + model.setTotalPages(totalPages); model.setDate(now); model.setReports(reports); diff --git a/cat-home/src/main/java/com/dianping/cat/system/page/abtest/Payload.java b/cat-home/src/main/java/com/dianping/cat/system/page/abtest/Payload.java index b841cb072..c0d6414d7 100644 --- a/cat-home/src/main/java/com/dianping/cat/system/page/abtest/Payload.java +++ b/cat-home/src/main/java/com/dianping/cat/system/page/abtest/Payload.java @@ -18,8 +18,8 @@ public class Payload implements ActionPayload { @FieldMeta("pageNum") private int m_pageNum; - @FieldMeta("enable") - private boolean m_enableAbtest; + @FieldMeta("suspend") + private int m_disableAbtest; @FieldMeta("ids") private String m_ids; @@ -75,16 +75,21 @@ public class Payload implements ActionPayload { m_page = SystemPage.getByName(page, SystemPage.ABTEST); } - public boolean isEnableAbtest() { - return m_enableAbtest; - } + public int getDisableAbtest() { + return m_disableAbtest; + } - public void setEnableAbtest(boolean enableAbtest) { - m_enableAbtest = enableAbtest; - } + public void setDisableAbtest(int disableAbtest) { + m_disableAbtest = disableAbtest; + } - public String getIds() { - return m_ids; + public String[] getIds() { + if (m_ids != null) { + String[] ids = m_ids.split("-"); + return ids; + } else { + return null; + } } public void setIds(String ids) { @@ -99,5 +104,9 @@ public class Payload implements ActionPayload { if (m_status == null) { m_status = "all"; } + if (m_disableAbtest != -1 && m_disableAbtest != 1) { + m_disableAbtest = 0; + } + } } diff --git a/cat-home/src/main/resources/META-INF/dal/jdbc/abtest-dal.xml b/cat-home/src/main/resources/META-INF/dal/jdbc/abtest-dal.xml index 8538c772c..0aeead38b 100644 --- a/cat-home/src/main/resources/META-INF/dal/jdbc/abtest-dal.xml +++ b/cat-home/src/main/resources/META-INF/dal/jdbc/abtest-dal.xml @@ -3,7 +3,13 @@ - + + + + + + +
+ + + +
+ + + Error!
+
+
+
+ +
+ + Success! +
+
+
+