使用Groovy按lastModified()日期对HTML表进行排序

时间:2011-08-03 16:44:35

标签: html sorting groovy html-table last-modified

我有一个groovy脚本,它从MYSQL数据库中提取了许多字段,并将数据插入到HTML表中,同时我找到了拉入数据库的文件的lastModified()日期。 / p>

我发现了一个相当类似的主题:“按lastModified()排序文件”,但我的问题是我从未真正将数据放入地图或列表中,而是构建xml并使用{{1}调用查询}将正确的字段插入表中,然后在xml本身中找到sql.eachRow(query)日期。

我无法在查询中进行排序,因为我必须从groovy脚本中获取lastModified()日期。所以我有两个问题,是否可以使用我发布的代码中的设置按上次修改日期进行排序?如果是这样,我需要在哪里实际执行排序,以便在HTML表上正确排序?我应该说我是Groovy和Java的新手,在尝试弄清楚这些事情时非常糟糕,所以关于你在哪里找到这些信息的任何提示都会很棒。

类似主题,但不是我正在寻找的主题:

我的代码,我不得不改变一些事情:

lastModified()

1 个答案:

答案 0 :(得分:2)

如果首先将SQL结果加载到List,那么您可以对此映射进行排序,并迭代它以生成XML:

sql = Sql.newInstance("location of database", "username", "password", "driver")
writer = new StringWriter()
def xml = new MarkupBuilder(writer)
rptDate = new java.util.Date()

query = 
"""
query stuff
"""

// Load the results into a list
List rows = sql.rows( query )

// Then manipulate the list to add the mod and fd fields
rows.collect { 
  mod = new File("/home/me/folderforfiles/${row.ID}.zip").lastModified()
  fd  = new Date(mod).format("EEE MMM dd hh:mm:ss a yyyy")
  it << [ mod:mod, fd:fd ]
}

// Then sort it based on this field
rows = rows.sort { it.mod }

xml.html(){
  head {
    title "Title"
  }
  body {
    h1 "Title"
    table(border:1, cellpadding:5) {
      tr {
        th "ID"
        th "Date Added"
        th "Hospital Name"
        th "Total Daily Clients"
        th "Total Daily Pets"
        th "Last Upload Date"
      } //end headings
      rows.each { row ->
        tr( align:'center' ) {
          td row.ID
          td row.DateAdded
          td row.HospitalName
          td row.TotalDailyClients
          td row.TotalDailyPets
          td row.fd
        }//end table data
      }//end loop
    }//end table
  }//end body
}//end html
println writer.toString()

我没有尝试过,但它应该做你想做的事......如果你有任何错误,请告诉我,我会把它们整理出来......

当然,如果你有成千上万的行,将所有行加载到内存中将无法工作......如果是这种情况,那么你应该将lastModified Date存储在数据库中,并使用sql对结果进行排序查询