Last active
September 29, 2015 21:34
-
-
Save stachjankowski/a52865134108f31457f6 to your computer and use it in GitHub Desktop.
Extracting SQL from .jasper (JasperReport).
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.{FileInputStream, ObjectInputStream, File} | |
import net.sf.jasperreports.engine.JasperReport | |
object JasperReportQueries { | |
class JasperReportQueriesExtractor(file: File) { | |
val report = new ObjectInputStream(new FileInputStream(file)) | |
.readObject.asInstanceOf[JasperReport] | |
def getTextQueries = getQueries map(_.getText) | |
def getQueries = getMainQuery.toList ++ getDataSetQueries | |
def getMainQuery = Option(report.getQuery) | |
def getDataSetQueries = getDataSets map(_.getQuery) | |
def getDataSets = Option(report.getDatasets).toSeq.flatten | |
} | |
def apply(file: File): Seq[String] = new JasperReportQueriesExtractor(file).getTextQueries | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.File | |
object Main extends App { | |
override def main(args: Array[String]) = | |
args.headOption map (new File(_)) match { | |
case Some(file) => JasperReportQueries(file).foreach(println) | |
case None => usage() | |
} | |
def usage() = println("Usage: java -jar ./JasperSQLExtractor.jar some_report.jasper") | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment