2013-11-14 2 views
0

Я использую тег отображения для отображения таблицы, он работает нормально, но у меня есть новое требование: «Мне нужно отобразить значение столбца второй строки в столбце первой строки и третьем значении строки в второй столбец строки .... т.е. для меня данные, поступающие как это в виде таблицы:Как читать значение столбца второй строки в столбце первой строки

Sr No.  From Date     To Date  Duration(hh:mm:ss) 
    1 01-Nov-2013 12:17:00 PM        2d 20:23:22  
    2 04-Nov-2013 09:40:35 AM      01:20:37  
    3   04-Nov-2013 11:27:21 AM     05:23:35 

Но мне нужны данные таблицы будет, как показано ниже:

Sr No.  From Date     To Date  Duration(hh:mm:ss) 
    1 01-Nov-2013 12:17:00 PM 04-Nov-2013 09:40:35 AM   2d 20:23:22  
    2 04-Nov-2013 09:40:35 AM 04-Nov-2013 11:27:21 AM   01:20:37  
    3 04-Nov-2013 11:27:21 AM   4th row 2nd column   05:23:35 

может любой помочь мне, как это сделать это Подробно код java, который я написал, будет это StoppageDBReport.jsp:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 
<%@ taglib uri="http://displaytag.sf.net" prefix="display" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<link rel="stylesheet" href="css/displaytag.css" type="text/css"> 
<link rel="stylesheet" href="css/screen.css" type="text/css"> 
<link rel="stylesheet" href="css/site.css" type="text/css"> 
<link href="css/sty.css" rel="stylesheet" type="text/css" /> 
<link href="css/tabborder.css" rel="stylesheet" type="text/css" /> 
</head> 
<body> 


<jsp:include page="Header.jsp" /> 
    <c:choose> 
    <c:when test="${not empty spdetails}">  
      <table id="display_table"> 
      <tr ><td><b>Stoppage Details</b></td></tr> 
      <tr ><td><b><%=request.getParameter("vehicleId") %></b></td></tr> 
      <tr><td>From &nbsp;<%=session.getAttribute("fromdate") %>&nbsp;to&nbsp;<%=session.getAttribute("startdate") %></td></tr> 

      </table> 
      <display:table id="deviceDetailsID" name="sessionScope.spdetailsid" pagesize="10" export="true" sort="list"> 

    <display:setProperty name="basic.empty.showtable" value="true" /> 
    <display:setProperty name="paging.banner.group_size" value="10" /> 
    <display:setProperty name="paging.banner.item_name" value="Record" /> 
    <display:setProperty name="paging.banner.item_names" value="Records" /> 

    <display:column property="serialID" title="Sl No" style="width: 3%"/> 
    <display:column property="deviceID" title="Device ID" style="width: 1%"/> 
    <display:column property="timestamp" title="From Date" format="{0,date,dd-MM-yyyy}"/> 
    <display:column property="timestamp" title="ToDate" /> 
    <display:column property="statuscode" title="Status Code"/> 
    <display:column property="address" title="Address" /> 
</display:table> 
</c:when> 

<c:otherwise> 
<jsp:include page="Pages/Stoppagebody.jsp"/> 
<div id="MenuLineDiv" style="width:100%; height: 2px; font-size: 2px; background-color: #FFCD44; position: relative; top: 0px;"></div> 
<table width="100%" border="1" cellpadding="0" cellspacing="0" bordercolor="#FFFFFF"> 
    <tr class="topheader"> 
     <td colspan="6" style="color:white;text-align:center;">Stoppage report for <%=request.getParameter("vehicleId") %> from <%=session.getAttribute("fromdate") %> to <%=session.getAttribute("startdate") %> </td> 
    </tr> 


    <tr class="secondhedr"> 
     <td colspan="6" style="color:white;text-align:center;">No data found</td> 
    </tr> 

</table> 
    </c:otherwise> 
</c:choose>    
    <jsp:include page="Footer.jsp"/>  


</body> 
</html> 

ДАО объект:

public List<StoppageDetails> getSpDetails(String accountID,String deviceID,String Timestamp1,String Timestamp2) { 
     Connection con=null; 
     List<StoppageDetails> spdetails = new ArrayList<StoppageDetails>(); 
     try{ 


      con= DBConnectionFactory.getDBConnection(); 

      String sql="SELECT accountID,deviceID,TIMESTAMP,address FROM eventdata WHERE (TIMESTAMP BETWEEN '"+Timestamp1+"' AND '"+Timestamp2+"') AND accountID='"+accountID+"' AND deviceID='"+deviceID+"'and speedKPH=0.0"; 
      Statement st=con.createStatement(); 
      ResultSet rs=st.executeQuery(sql); 
      int count=0; 
      System.out.println("::::"+rs.next()); 
      while (rs.next()){ 
       StoppageDetails ud=new StoppageDetails(); 
       ud.setSerialID(count); 
       ud.setAccountID(rs.getString(1)); 
       ud.setDeviceID(rs.getString(2)); 
       String stringtimestamp=rs.getString(3); 
       long l=Long.parseLong(stringtimestamp); 
       long longtimestamp = l * 1000L; 
       String datestring= new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new java.util.Date(longtimestamp)); 
        ud.setTimestamp(datestring); 
        String address=rs.getString(4); 
       String address1[]=address.split(" \\d"); 
       ud.setAddress(address1[0]); 
       spdetails.add(ud); 
       count++; 
       } 

      }catch (Exception e) { 
       e.printStackTrace(); 

      } 
     System.out.println(spdetails); 
      return spdetails; 


     } 

код контроллера:

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

     try{ 
      response.setContentType("text/html"); 

      HttpSession session=request.getSession(true); 

      String accountID=(String)session.getAttribute("sessionId"); 
      String deviceID=request.getParameter("vehicleId"); 
      String fromdate=request.getParameter("AnotherDate"); 
      String todate=request.getParameter("ADate"); 

      session.setAttribute("vid",deviceID); 
      session.setAttribute("fromdate",fromdate); 
      session.setAttribute("startdate",todate); 
      SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); 
      Date startD = (Date) sdf.parse(fromdate); 
      Date endD = (Date) sdf.parse(todate); 

      Calendar cal1 = Calendar.getInstance(); 
      Calendar cal2 = Calendar.getInstance(); 
      cal1.setTime(startD); 
      cal2.setTime(endD); 

      long timestamp1,timestamp2; 
      timestamp1=cal1.getTimeInMillis()/1000; 
      timestamp2=cal2.getTimeInMillis()/1000; 
      String Timestamp1 = Long.toString(timestamp1); 
      String Timestamp2 = Long.toString(timestamp2); 



      UserDAO rdao=new UserDAO(); 
      List<StoppageDetails> spdetails=rdao.getSpDetails(accountID, deviceID, Timestamp1, Timestamp2); 

          session.setAttribute("spdetailsid", spdetails); 
           RequestDispatcher rd=request.getRequestDispatcher("StoppageDBReport.jsp"); 
            rd.include(request,response); 
          return; 

     }catch (Exception e) { 
      // TODO: handle exception 
     } 


    } 

} 

Vo объекты:

package com.preva.vo; 

public class StoppageDetails { 

    private String accountID, deviceID,timestamp,address; 
    private int serialID; 
    public String getTimestamp() { 
     return timestamp; 
    } 

    public void setTimestamp(String timestamp) { 
     this.timestamp = timestamp; 
    } 

    public int getSerialID() { 
     return serialID; 
    } 

    public void setSerialID(int serialID) { 
     this.serialID = serialID; 
    } 

    public String getAccountID() { 
     return accountID; 
    } 

    public void setAccountID(String accountID) { 
     this.accountID = accountID; 
    } 

    public String getDeviceID() { 
     return deviceID; 
    } 

    public void setDeviceID(String deviceID) { 
     this.deviceID = deviceID; 
    } 
    public String getAddress() { 
     return address; 
    } 

    public void setAddress(String address) { 
     this.address = address; 
    } 



} 

ответ

0

Это можно сделать в mysq l с самостоятельным подключением, но самое простое решение - просто прочитать это значение из следующего элемента в списке внутри java.

Это из контроллера

List<StoppageDetails> spdetails=rdao.getSpDetails(accountID, deviceID, Timestamp1, Timestamp2); 
for (int i = 0; i < spdetails.size() - 1; i++) { 
    StoppageDetails current = spdetails.get(i); 
    StoppageDetails next = spdetails.get(i+1); 
    current.setTimestamp2(next.getTimestamp()); 
} 
+0

Спасибо, что ответили Андреасу, можно объяснить, как это сделать в mysql, так как мне нужна разница между метками времени – hari

0

Вы можете использовать запрос, как это -

SELECT t1.sr_no, t1.From_Date, t2.From_Date AS To_Date, Duration FROM table1 t1 
    LEFT JOIN (SELECT * FROM table1 ORDER BY sr_no) t2 
    ON t1.sr_no < t2.sr_no 
GROUP BY 
    t1.sr_no 

В этом примере строки сортируются по Sr No. поля.

Смежные вопросы