New file |
| | |
| | | package de.hsadmin.pillar; |
| | | |
| | | import java.io.IOException; |
| | | import java.io.PrintWriter; |
| | | import java.util.Iterator; |
| | | import java.util.List; |
| | | |
| | | import javax.persistence.EntityManager; |
| | | import javax.persistence.Query; |
| | | import javax.servlet.ServletException; |
| | | import javax.servlet.http.HttpServlet; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | |
| | | import de.hsadmin.core.model.Transaction; |
| | | import de.hsadmin.core.qserv.ProcessorException; |
| | | import de.hsadmin.mods.pac.Hive; |
| | | import de.hsadmin.mods.pac.Pac; |
| | | import de.hsadmin.mods.pac.PacComponent; |
| | | |
| | | public class JsonPillarServlet extends HttpServlet { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @Override |
| | | protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { |
| | | final Transaction transaction = new Transaction("pilalr"); |
| | | final EntityManager em = transaction.getEntityManager(); |
| | | final String hiveFqdn = req.getParameter("hive"); |
| | | String hiveName = ""; |
| | | if (hiveFqdn != null && hiveFqdn.length() == 19 && hiveFqdn.endsWith(".hostsharing.net") && hiveFqdn.startsWith("h")) { |
| | | hiveName = hiveFqdn.substring(0, 3); |
| | | } else { |
| | | throw new ServletException("error in hive parameter"); |
| | | } |
| | | final Query hiveQuery = em.createQuery("SELECT h FROM Hives h WHERE h.name = :hive"); |
| | | hiveQuery.setParameter("hive", hiveName); |
| | | final Object hiveResult = hiveQuery.getSingleResult(); |
| | | final Hive hive = (Hive) hiveResult; |
| | | final Query pacsQuery = em.createQuery("SELECT p FROM Pacs p WHERE p.hive.name = :hive AND p.basepac.name = 'PAC/WEB'"); |
| | | pacsQuery.setParameter("hive", hiveName); |
| | | final List<?> pacsResult = pacsQuery.getResultList(); |
| | | resp.setContentType("text/plain"); |
| | | final PrintWriter writer = resp.getWriter(); |
| | | writer.println("{"); |
| | | writer.println(" \"hivename\": \"" + hive.getHiveName() + "\""); |
| | | writer.println(" \"hiveipv4\": \"" + hive.getInetAddr().getInet4Addr() + "\""); |
| | | try { |
| | | writer.println(" \"hiveipv6\": \"" + hive.getInetAddr().getInet6Addr() + "\""); |
| | | } catch (ProcessorException e) { |
| | | // dont care |
| | | } |
| | | writer.println(" \"pacs\": ["); |
| | | final Iterator<?> pacsIterator = pacsResult.iterator(); |
| | | boolean firstLoop = true; |
| | | while (pacsIterator.hasNext()) { |
| | | final Object result = pacsIterator.next(); |
| | | final Pac pac = (Pac) result; |
| | | if (firstLoop) { |
| | | firstLoop = false; |
| | | writer.println(" {"); |
| | | } else { |
| | | writer.println(" , {"); |
| | | } |
| | | writer.println(" \"pac\": \"" + pac.getName() + "\""); |
| | | writer.println(" , \"ipv4\": \"" + pac.getCurINetAddr().getInet4Addr() + "\""); |
| | | try { |
| | | writer.println(" , \"ipv6\": \"" + pac.getCurINetAddr().getInet6Addr() + "\""); |
| | | } catch (ProcessorException e) { |
| | | // dont care |
| | | } |
| | | final PacComponent pacQuota = pac.getPacComponent("QUOTA"); |
| | | if (pacQuota != null) { |
| | | int quota = pacQuota.getQuantity(); |
| | | writer.println(" , \"quota\": \"" + quota + "\""); |
| | | } |
| | | final PacComponent pacOffice = pac.getPacComponent("OFFICE"); |
| | | if (pacOffice != null) { |
| | | int office = pacOffice.getQuantity(); |
| | | writer.println(" , \"office\": \"" + office + "\""); |
| | | } |
| | | writer.println(" }"); |
| | | } |
| | | writer.println(" ]"); |
| | | writer.println("}"); |
| | | writer.close(); |
| | | em.close(); |
| | | } |
| | | |
| | | } |