diff --git a/src/main/java/ui/LoginUI.java b/src/main/java/ui/LoginUI.java index 8d22498..8a5dc95 100644 --- a/src/main/java/ui/LoginUI.java +++ b/src/main/java/ui/LoginUI.java @@ -1,18 +1,31 @@ package ui; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import static javax.swing.LayoutStyle.ComponentPlacement.UNRELATED; -import javax.swing.*; -import java.awt.*; +import java.awt.Component; +import java.awt.Container; +import java.awt.Desktop; +import java.awt.Image; import java.awt.event.ActionEvent; import java.io.File; - -import static javax.swing.LayoutStyle.ComponentPlacement.UNRELATED; +import javax.swing.AbstractAction; +import javax.swing.GroupLayout; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JFileChooser; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JPasswordField; +import javax.swing.JTextField; +import javax.swing.WindowConstants; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class LoginUI extends JFrame { - private static Logger logger = LoggerFactory.getLogger(LoginUI.class); + private static final Logger logger = LoggerFactory.getLogger(LoginUI.class); private static final String DEFAULT_COMPANY = "https://wix.net.hilan.co.il"; private static final String FOLDER_IMG_PATH = "/open_folder.png"; diff --git a/src/main/scala/clients/AuthenticatedClient.scala b/src/main/scala/clients/AuthenticatedClient.scala index 322bb6d..3ab625a 100644 --- a/src/main/scala/clients/AuthenticatedClient.scala +++ b/src/main/scala/clients/AuthenticatedClient.scala @@ -7,8 +7,8 @@ import com.fasterxml.jackson.databind.{JsonNode, ObjectMapper} import com.gargoylesoftware.htmlunit.{HttpMethod, Page, WebClient, WebRequest} import org.slf4j.LoggerFactory import scrape.NoDataFoundException -import scala.jdk.CollectionConverters._ +import scala.jdk.CollectionConverters._ import scala.util.{Failure, Success, Try} @@ -17,7 +17,7 @@ class AuthenticatedClient(webClient: WebClient, username: String, orgId: String, private val logger = LoggerFactory.getLogger(classOf[AuthenticatedClient]) private val mapper = new ObjectMapper - def getAllPayslipsDates(): Try[Seq[HilanDate]] = { + def fetchAllPayslipsDates(): Try[Seq[HilanDate]] = { val request = new WebRequest(new URL(s"$baseUrl/Hilannetv2/Services/Public/WS/PaySlipApiapi.asmx/GetInitialData"), HttpMethod.POST) request.setRequestBody(s"""{"employeeId":"$username"}""") val pageWithDates = Try(webClient.getPage[Page](request).getWebResponse.getContentAsString()) @@ -31,7 +31,7 @@ class AuthenticatedClient(webClient: WebClient, username: String, orgId: String, ) } - def getAllForm106Dates(): Try[Seq[HilanDate]] = { + def fetchAllForm106Dates(): Try[Seq[HilanDate]] = { val request = new WebRequest(new URL(s"$baseUrl/Hilannetv2/Services/Public/WS/Form106Apiapi.asmx/GetInitialData"), HttpMethod.POST) request.setRequestBody(s"""{"employeeId":"$username"}""") val pageWithDates = Try(webClient.getPage[Page](request).getWebResponse.getContentAsString()) diff --git a/src/main/scala/main/Main.scala b/src/main/scala/main/Main.scala index 90a071f..d87820a 100644 --- a/src/main/scala/main/Main.scala +++ b/src/main/scala/main/Main.scala @@ -73,11 +73,9 @@ object Main { .getOrElse(getUserInput(description)) private def runGUI(): Unit = { - EventQueue.invokeLater(new Runnable { - override def run(): Unit = { - val ex: LoginUI = new LoginUI() - ex.setVisible(true) - } + EventQueue.invokeLater(() => { + val ex: LoginUI = new LoginUI() + ex.setVisible(true) }) } diff --git a/src/main/scala/scrape/Scraper.scala b/src/main/scala/scrape/Scraper.scala index 018ab55..2a20f09 100644 --- a/src/main/scala/scrape/Scraper.scala +++ b/src/main/scala/scrape/Scraper.scala @@ -13,14 +13,14 @@ class Scraper(authenticatedClient: AuthenticatedClient) { def downloadPayslips(folderPath: String): Try[Unit] = { for { - payslipDates <- authenticatedClient.getAllPayslipsDates() + payslipDates <- authenticatedClient.fetchAllPayslipsDates() downloaded <- downloadPayslipsToFolder(folderPath, payslipDates) } yield downloaded } def downloadForm106s(folderPath: String): Try[Unit] = { for { - form106Dates <- authenticatedClient.getAllForm106Dates() + form106Dates <- authenticatedClient.fetchAllForm106Dates() downloaded <- downloadForm106sToFolder(Paths.get(folderPath, "Form106").toString, form106Dates) } yield downloaded } diff --git a/src/main/scala/util/ExcelExport.scala b/src/main/scala/util/ExcelExport.scala index e458731..75807bd 100644 --- a/src/main/scala/util/ExcelExport.scala +++ b/src/main/scala/util/ExcelExport.scala @@ -43,8 +43,8 @@ object ExcelExport { private def fillWorkSheet(data: Seq[(Key, Map[Date, Value])], worksheet: HSSFSheet, - columnResolver: (Date => Int), - setCellValue: ((HSSFCell, Value) => Unit)): Unit = { + columnResolver: Date => Int, + setCellValue: (HSSFCell, Value) => Unit): Unit = { data.zipWithIndex.foreach { case ((k, v), i) => val rowInWorkSheet = createRow(worksheet, k.info, k.notes.getOrElse(""), i + 1) @@ -63,7 +63,7 @@ object ExcelExport { createdRow } - private def fillPayslipsWorkSheet(data: Seq[(Key, Map[Date, Value])], payslipsSheet: HSSFSheet, columnResolver: (Date => Int)): Unit = { + private def fillPayslipsWorkSheet(data: Seq[(Key, Map[Date, Value])], payslipsSheet: HSSFSheet, columnResolver: Date => Int): Unit = { val pensionData = data.filter(isPension).zipWithIndex diff --git a/src/main/scala/util/MathUtil.scala b/src/main/scala/util/MathUtil.scala index 530e485..1eac3d4 100644 --- a/src/main/scala/util/MathUtil.scala +++ b/src/main/scala/util/MathUtil.scala @@ -9,7 +9,7 @@ object MathUtil { } implicit class Numbers(val str: String) extends AnyVal { - def removeCommas: String = str.replace(",", "") + def removeCommas(): String = str.replace(",", "") } } diff --git a/src/test/scala/clients/ClientTest.scala b/src/test/scala/clients/ClientTest.scala index bbff662..302d5bd 100644 --- a/src/test/scala/clients/ClientTest.scala +++ b/src/test/scala/clients/ClientTest.scala @@ -9,7 +9,7 @@ class ClientTest extends SpecWithJUnit { "extract OrgId From Text" in new Ctx { val text = "\\u003c/div\\u003e\\\\r\\\\n\\u003c/div\\u003e\\\\r\\\\n{{/if}}\\\\r\\\\n\\\\r\\\\n\\\",\\\"templateId\\\":null,\\\"initialData\\\":{\\\"OrgId\\\":\\\"2013\\\",\\\"IsShowOrganizationSelection\\\":false,\\\"IsShowId\\\":false,\\\"IsShowOrgLogo\\\":false,\\\"IsShowForgotPassword\\\":true,\\\"IsShowForgotPasswordHelp\\\":true,\\\"OrgName\\\":\\\"WIX\\\",\\\"Culture\\\":\\\"en-US\\\",\\\"SiteType\\\":1,\\\"Code\\\":0,\\\"IsMobileApp\\\":false,\\\"OCookie\\\":null,\\\"ErrorMessage\\\":null,\\\"IsUseIdAsEmployeeId\\\":false,\\\"IsBlocked\\\":false,\\\"VmName\\\":null,\\\"Title\\\":null}}'));" - val orgId = client.extractOrgIdFromPage(text) + val orgId: Option[String] = client.extractOrgIdFromPage(text) orgId must beSome("2013") } diff --git a/src/test/scala/data/DataExtractorTest.scala b/src/test/scala/data/DataExtractorTest.scala index 7a9c598..529a53b 100644 --- a/src/test/scala/data/DataExtractorTest.scala +++ b/src/test/scala/data/DataExtractorTest.scala @@ -1,6 +1,6 @@ package data -import java.util.GregorianCalendar +import java.util.{Date, GregorianCalendar} import org.specs2.mutable.SpecificationWithJUnit import org.specs2.specification.Scope @@ -26,10 +26,10 @@ class DataExtractorTest extends SpecificationWithJUnit { } "merge info from two lines into one if possible" in new Context { - val info = DataExtractor.getLinesByKey(payslip) + val info: Map[String, List[String]] = DataExtractor.getLinesByKey(payslip) info must havePair("064 מנורה משלימה קצבה שכיר-תג." -> List("5,001.00 6.25 312.56", "5,001.00 5.75 287.55")) - val merged = DataExtractor.mergeInfoSplitIntoTwoLines(info) + val merged: Map[String, List[String]] = DataExtractor.mergeInfoSplitIntoTwoLines(info) merged must havePair("064 מנורה משלימה קצבה שכיר-תג." -> List("5001.0 6.25 312.56 5.75 287.55")) } @@ -47,7 +47,7 @@ class DataExtractorTest extends SpecificationWithJUnit { } class Context extends Scope { - val date = new GregorianCalendar(2016, 4, 1).getTime + val date: Date = new GregorianCalendar(2016, 4, 1).getTime val payslip: String = """ diff --git a/src/test/scala/util/HebrewUtilTest.scala b/src/test/scala/util/HebrewUtilTest.scala index d40ebf5..75b8a1a 100644 --- a/src/test/scala/util/HebrewUtilTest.scala +++ b/src/test/scala/util/HebrewUtilTest.scala @@ -24,11 +24,11 @@ class HebrewUtilTest extends SpecificationWithJUnit { } class Ctx extends Scope { - val hebrewText = + val hebrewText: String = """|-1,234.56 -10,000.00 04/16 םייוציפ ינמז הבצק מ.ב 002 - |1,098.76 5.50 11,123.00 .גת-ריכש הבצק היסנפ ןרק לארה 047 - |-1,111 35% א45 ףיעסל יוכינ - |1,000.00 ESPP לארשי 680""".stripMargin + |1,098.76 5.50 11,123.00 .גת-ריכש הבצק היסנפ ןרק לארה 047 + |-1,111 35% א45 ףיעסל יוכינ + |1,000.00 ESPP לארשי 680""".stripMargin } }