Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes #15915: Move date formatter service to a more common project #3356

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ import com.normation.rudder.services.healthcheck.HealthcheckResult.Critical
import com.normation.rudder.services.healthcheck.HealthcheckResult.Warning
import com.normation.rudder.services.healthcheck.HealthcheckResult.Ok
import com.normation.rudder.services.modification.DiffService
import com.normation.rudder.web.components.DateFormaterService
import com.normation.utils.DateFormaterService
import net.liftweb.common._
import net.liftweb.json.JsonDSL._
import net.liftweb.json._
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,6 @@ import com.normation.rudder.ncf.{Technique => NcfTechnique}
import com.normation.rudder.api.ApiAuthorizationKind
import com.normation.rudder.ncf.ResourceFile
import com.normation.rudder.services.workflows.WorkflowLevelService
import com.normation.rudder.web.components.DateFormaterService
import com.normation.utils.Control
import com.normation.box._
import com.normation.rudder.ncf.ResourceFileState
Expand All @@ -104,6 +103,7 @@ import com.normation.rudder.domain.nodes.GroupProperty
import com.normation.rudder.domain.nodes.InheritMode
import com.normation.rudder.ncf.ParameterType.ParameterTypeService
import com.normation.rudder.services.policies.PropertyParser
import com.normation.utils.DateFormaterService
import org.bouncycastle.cert.X509CertificateHolder
import zio.{Tag => _, _}
import zio.syntax._
Expand Down Expand Up @@ -950,7 +950,7 @@ final case class RestExtractorService (
enabled <- extractJsonBoolean(json, "enabled")
oldId <- extractJsonString(json, "oldId", toApiAccountId)
expirationDefined <- extractJsonBoolean(json, "expirationDateDefined")
expirationValue <- extractJsonString(json, "expirationDate", DateFormaterService.parseDateTimePicker)
expirationValue <- extractJsonString(json, "expirationDate", DateFormaterService.parseDateTimePicker(_).toBox)
authType <- extractJsonString(json, "authorizationType", ApiAuthorizationKind.parse)

acl <- extractJsonArray(json , "acl")((extractApiACLFromJSON _ )).map(_.getOrElse(Nil))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,9 @@ import net.liftweb.json._
import net.liftweb.json.JsonDSL._
import com.normation.inventory.domain._
import com.normation.rudder.domain.Constants
import com.normation.rudder.web.components.DateFormaterService
import com.normation.rudder.domain.nodes.NodeInfo
import com.normation.rudder.rest.ApiVersion
import com.normation.utils.DateFormaterService
import org.joda.time.DateTime

sealed trait NodeDetailLevel {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ import com.normation.rudder.repository.json.DataExtractor.CompleteJson
import com.normation.rudder.rest.RestExtractorService
import com.normation.rudder.rest.RestUtils._
import com.normation.rudder.services.user.PersonIdentService
import com.normation.rudder.web.components.DateFormaterService
import com.normation.rudder.web.services._
import com.normation.utils.DateFormaterService
import net.liftweb.common._
import net.liftweb.http.rest.RestHelper
import net.liftweb.http.{JsonResponse, LiftResponse, Req, S}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ import com.normation.rudder.repository.RoParameterRepository
import com.normation.rudder.repository.json.DataExtractor.OptionnalJson
import com.normation.rudder.services.nodes.MergeNodeProperties
import com.normation.rudder.services.reports.ReportingService
import com.normation.rudder.web.components.DateFormaterService
import com.normation.utils.DateFormaterService
import com.typesafe.config.ConfigRenderOptions
import net.liftweb.http.JsonResponse
import net.liftweb.json.JsonAST.JDouble
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ import com.normation.rudder.services.eventlog.{EventLogDetailsService, RollbackI
import com.normation.rudder.services.modification.ModificationService
import com.normation.rudder.services.nodes.NodeInfoService
import com.normation.rudder.services.user.PersonIdentService
import com.normation.rudder.web.components.DateFormaterService
import com.normation.rudder.web.model.LinkUtil
import com.normation.utils.DateFormaterService
import net.liftweb.common._
import net.liftweb.http.{S, SHtml}
import net.liftweb.http.js.JE._
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,11 @@ import js._
import JE._
import JsCmds._
import com.normation.rudder.batch._
import com.normation.rudder.web.components.DateFormaterService
import org.joda.time.DateTime
import bootstrap.liftweb.RudderConfig
import bootstrap.liftweb.RudderConfig.clearCacheService
import com.normation.rudder.web.model.CurrentUser
import com.normation.utils.DateFormaterService

class AsyncDeployment extends CometActor with CometListener with Loggable {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,11 @@ import net.liftweb.util.Helpers._
import net.liftweb.http.js.JE._
import net.liftweb.http.js.JsExp
import com.normation.cfclerk.domain.TechniqueVersion
import com.normation.rudder.web.components.DateFormaterService
import org.joda.time.Interval
import com.normation.cfclerk.xmlparsers.CfclerkXmlConstants.DEFAULT_COMPONENT_KEY
import com.normation.rudder.domain.policies.PolicyMode._
import com.normation.rudder.repository.FullNodeGroupCategory
import com.normation.utils.DateFormaterService
import net.liftweb.json.JsonAST.JValue

object ComputePolicyMode {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ package services

import model.JsNodeId
import com.normation.inventory.domain._
import com.normation.rudder.web.components.DateFormaterService

import scala.xml._
import net.liftweb.common._
Expand All @@ -62,7 +61,8 @@ import com.normation.rudder.hooks.HookReturnCode.Interrupt
import com.normation.rudder.hooks.HookReturnCode
import com.normation.box._
import com.normation.cfclerk.domain.HashAlgoConstraint.SHA1
import com.normation.rudder.domain.reports.{ComplianceLevelSerialisation}
import com.normation.rudder.domain.reports.ComplianceLevelSerialisation
import com.normation.utils.DateFormaterService
import com.normation.zio._
import org.joda.time.format.ISODateTimeFormat

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ import net.liftweb.json.JsonAST.JString
import org.joda.time.format.DateTimeFormat
import com.normation.rudder.web.ChooseTemplate
import com.normation.box._
import com.normation.rudder.web.components.DateFormaterService
import com.normation.utils.DateFormaterService

/**
* Show the reports from cfengine (raw data)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ import net.liftweb.http.js._
import JsCmds._
import JE._
import net.liftweb.http.SHtml._
import com.normation.rudder.web.components.DateFormaterService
import com.normation.rudder.reports.execution.RoReportsExecutionRepository
import com.normation.rudder.domain.logger.TimingDebugLogger
import com.normation.inventory.domain.VirtualMachineType
Expand All @@ -60,6 +59,7 @@ import com.normation.rudder.reports.execution.AgentRunWithNodeConfig
import com.normation.box._
import com.normation.rudder.repository.RoRuleRepository
import com.normation.rudder.services.nodes.NodeInfoService
import com.normation.utils.DateFormaterService

/**
* Very much like the NodeGrid, but with the new WB and without ldap information
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,14 @@ import JsCmds._
import JE._
import com.normation.rudder.repository._
import com.normation.rudder.web.model.CurrentUser
import com.normation.rudder.web.components.DateFormaterService
import org.joda.time.DateTime
import org.eclipse.jgit.lib.PersonIdent
import com.normation.eventlog.EventActor
import com.normation.eventlog.ModificationId
import bootstrap.liftweb.RudderConfig
import com.normation.box._
import com.normation.errors._
import com.normation.utils.DateFormaterService

import scala.xml.NodeSeq

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ package com.normation.rudder.web.snippet.administration
import net.liftweb.common._
import net.liftweb.http.DispatchSnippet
import net.liftweb.util.Helpers._

import scala.xml._
import com.normation.rudder.web.components.DateFormaterService
import org.joda.time.DateTime
import com.normation.inventory.domain.MemorySize
import net.liftweb.http._
Expand All @@ -51,6 +51,7 @@ import org.joda.time.format.DateTimeFormat
import net.liftweb.http.js.JE.JsRaw
import com.normation.rudder.domain.reports._
import bootstrap.liftweb.RudderConfig
import com.normation.utils.DateFormaterService

class DatabaseManagement extends DispatchSnippet with Loggable {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,10 @@

package com.normation.rudder.web.snippet.configuration

import com.normation.rudder.domain.policies.{DirectiveId, Directive}
import com.normation.rudder.domain.policies.{Directive, DirectiveId}
import com.normation.cfclerk.domain.Technique
import com.normation.rudder.web.components.{DirectiveEditForm,DateFormaterService}
import com.normation.rudder.web.components.DirectiveEditForm

import scala.xml._
import net.liftweb.common._
import Box._
Expand All @@ -62,8 +63,8 @@ import com.normation.eventlog.ModificationId
import com.normation.rudder.web.services.AgentCompat
import net.liftweb.util.Helpers.TimeSpan
import com.normation.cfclerk.domain.TechniqueGenerationMode._

import com.normation.box._
import com.normation.utils.DateFormaterService

/**
* Snippet for managing the System and Active Technique libraries.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ import com.normation.rudder.domain.eventlog.RefuseNodeEventLog
import com.normation.rudder.domain.logger.TimingDebugLogger
import com.normation.rudder.domain.servers.Srv
import com.normation.rudder.web.ChooseTemplate
import com.normation.rudder.web.components.DateFormaterService
import com.normation.rudder.web.components.popup.ExpectedPolicyPopup
import com.normation.rudder.web.model.CurrentUser
import net.liftweb.common._
Expand All @@ -60,9 +59,10 @@ import net.liftweb.util.Helpers._
import org.joda.time.DateTime
import org.springframework.security.core.context.SecurityContextHolder
import org.springframework.security.core.userdetails.UserDetails
import scala.xml._

import scala.xml._
import com.normation.box._
import com.normation.utils.DateFormaterService

/**
* Check for server in the pending repository and propose to
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ import com.normation.inventory.domain.NodeId
import com.normation.inventory.domain.RemovedInventory
import com.normation.rudder.domain.eventlog._
import com.normation.rudder.domain.eventlog.DeleteNodeEventLog
import com.normation.rudder.web.components.DateFormaterService
import com.normation.rudder.web.services.DisplayNode
import net.liftweb.common._
import net.liftweb.http._
Expand All @@ -54,9 +53,10 @@ import net.liftweb.util._
import net.liftweb.util.Helpers._
import org.joda.time.DateTime
import org.joda.time.format._
import scala.xml._

import scala.xml._
import com.normation.box._
import com.normation.utils.DateFormaterService

object PendingHistoryGrid extends Loggable {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,17 +35,19 @@
*************************************************************************************
*/

package com.normation.rudder.web.components
package com.normation.utils

import com.normation.errors.Inconsistency
import com.normation.errors.PureResult
import org.joda.time.DateTime
import org.joda.time.format.PeriodFormatterBuilder
import org.joda.time.Duration
import org.joda.time.chrono.ISOChronology
import net.liftweb.common.Box
import net.liftweb.util.Helpers
import org.joda.time.format.DateTimeFormat
import org.joda.time.format.DateTimeFormatterBuilder
import org.joda.time.format.ISODateTimeFormat
import org.joda.time.format.PeriodFormatterBuilder

import scala.util.control.NonFatal

object DateFormaterService {

Expand All @@ -68,14 +70,22 @@ object DateFormaterService {
*/
def serialize(datetime: DateTime): String = datetime.toString(ISODateTimeFormat.dateTimeNoMillis)

def parseDate(date : String) : Box[DateTime] = {
Helpers.tryo { ISODateTimeFormat.dateTimeNoMillis().parseDateTime(date) }
def parseDate(date : String) : PureResult[DateTime] = {
try {
Right(ISODateTimeFormat.dateTimeNoMillis().parseDateTime(date) )
} catch {
case NonFatal(ex) => Left(Inconsistency(s"String '${date}' can't be parsed as an ISO date/time: ${ex.getMessage}"))
}
}


val dateFormatTimePicker = "yyyy-MM-dd HH:mm"
def parseDateTimePicker(date : String) : Box[DateTime] = {
Helpers.tryo {DateTimeFormat.forPattern(dateFormatTimePicker).parseDateTime(date) }
def parseDateTimePicker(date : String) : PureResult[DateTime] = {
try {
Right(DateTimeFormat.forPattern(dateFormatTimePicker).parseDateTime(date) )
} catch {
case NonFatal(ex) => Left(Inconsistency((s"String '${date}' can't be parsed as a date (expected pattern: yyyy-MM-dd): ${ex.getMessage}")))
}
}

def getDisplayDateTimePicker(date : DateTime) : String = {
Expand Down