|
Play Framework/Scala example source code file (ObjectMappings.scala)
The ObjectMappings.scala Play Framework example source code/* * Copyright (C) 2009-2013 Typesafe Inc. <http://www.typesafe.com> */ package play.api.data import format._ import validation._ /* Everything below this line is generated by this magical shell script: #!/bin/sh exec scala -savecompiled "$0" $@ !# def generate(times: Int) = { def g(format: String, sep: String) = (for (i <- 1 to times) yield format.replaceAll("%", i.toString).replaceAll("#", (i - 1).toString)).mkString(sep) def aParams = g("A%", ", ") s""" case class ObjectMapping$times[R, $aParams](apply: Function$times[$aParams, R], unapply: Function1[R, Option[($aParams)]], ${g("f%: (String, Mapping[A%])", ", ")}, val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping { ${g("val field% = f%._2.withPrefix(f%._1).withPrefix(key)", "\n\n ")} def bind(data: Map[String, String]): Either[Seq[FormError], R] = { merge(${g("field%.bind(data)", ", ")}) match { case Left(errors) => Left(errors) case Right(values) => { applyConstraints(apply( ${g("values(#).asInstanceOf[A%]", ",\n ")} )) } } } def unbind(value: R): Map[String, String] = { unapply(value).map { fields => val (${g("v%", ", ")}) = fields ${g("field%.unbind(v%)", " ++ ")} }.getOrElse(Map.empty) } def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = { unapply(value).map { fields => val (${g("v%", ", ")}) = fields ${g("val a% = field%.unbindAndValidate(v%)", "\n ")} (${g("a%._1", " ++ ")}) -> (${g("a%._2", " ++ ")}) }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed"))) } def withPrefix(prefix: String): ObjectMapping$times[R, $aParams] = addPrefix(prefix).map(newKey => this.copy(key = newKey)).getOrElse(this) def verifying(addConstraints: Constraint[R]*): ObjectMapping$times[R, $aParams] = { this.copy(constraints = constraints ++ addConstraints.toSeq) } val mappings = Seq(this) ++ ${g("field%.mappings", " ++ ")} } """ } println((for (i <- 1 to 18) yield generate(i)).mkString("")) */ case class ObjectMapping1[R, A1](apply: Function1[A1, R], unapply: Function1[R, Option[(A1)]], f1: (String, Mapping[A1]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping { val field1 = f1._2.withPrefix(f1._1).withPrefix(key) def bind(data: Map[String, String]): Either[Seq[FormError], R] = { merge(field1.bind(data)) match { case Left(errors) => Left(errors) case Right(values) => { applyConstraints(apply( values(0).asInstanceOf[A1] )) } } } def unbind(value: R): Map[String, String] = { unapply(value).map { fields => val (v1) = fields field1.unbind(v1) }.getOrElse(Map.empty) } def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = { unapply(value).map { fields => val (v1) = fields val a1 = field1.unbindAndValidate(v1) (a1._1) -> (a1._2) }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed"))) } def withPrefix(prefix: String): ObjectMapping1[R, A1] = addPrefix(prefix).map(newKey => this.copy(key = newKey)).getOrElse(this) def verifying(addConstraints: Constraint[R]*): ObjectMapping1[R, A1] = { this.copy(constraints = constraints ++ addConstraints.toSeq) } val mappings = Seq(this) ++ field1.mappings } case class ObjectMapping2[R, A1, A2](apply: Function2[A1, A2, R], unapply: Function1[R, Option[(A1, A2)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping { val field1 = f1._2.withPrefix(f1._1).withPrefix(key) val field2 = f2._2.withPrefix(f2._1).withPrefix(key) def bind(data: Map[String, String]): Either[Seq[FormError], R] = { merge(field1.bind(data), field2.bind(data)) match { case Left(errors) => Left(errors) case Right(values) => { applyConstraints(apply( values(0).asInstanceOf[A1], values(1).asInstanceOf[A2] )) } } } def unbind(value: R): Map[String, String] = { unapply(value).map { fields => val (v1, v2) = fields field1.unbind(v1) ++ field2.unbind(v2) }.getOrElse(Map.empty) } def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = { unapply(value).map { fields => val (v1, v2) = fields val a1 = field1.unbindAndValidate(v1) val a2 = field2.unbindAndValidate(v2) (a1._1 ++ a2._1) -> (a1._2 ++ a2._2) }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed"))) } def withPrefix(prefix: String): ObjectMapping2[R, A1, A2] = addPrefix(prefix).map(newKey => this.copy(key = newKey)).getOrElse(this) def verifying(addConstraints: Constraint[R]*): ObjectMapping2[R, A1, A2] = { this.copy(constraints = constraints ++ addConstraints.toSeq) } val mappings = Seq(this) ++ field1.mappings ++ field2.mappings } case class ObjectMapping3[R, A1, A2, A3](apply: Function3[A1, A2, A3, R], unapply: Function1[R, Option[(A1, A2, A3)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping { val field1 = f1._2.withPrefix(f1._1).withPrefix(key) val field2 = f2._2.withPrefix(f2._1).withPrefix(key) val field3 = f3._2.withPrefix(f3._1).withPrefix(key) def bind(data: Map[String, String]): Either[Seq[FormError], R] = { merge(field1.bind(data), field2.bind(data), field3.bind(data)) match { case Left(errors) => Left(errors) case Right(values) => { applyConstraints(apply( values(0).asInstanceOf[A1], values(1).asInstanceOf[A2], values(2).asInstanceOf[A3] )) } } } def unbind(value: R): Map[String, String] = { unapply(value).map { fields => val (v1, v2, v3) = fields field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) }.getOrElse(Map.empty) } def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = { unapply(value).map { fields => val (v1, v2, v3) = fields val a1 = field1.unbindAndValidate(v1) val a2 = field2.unbindAndValidate(v2) val a3 = field3.unbindAndValidate(v3) (a1._1 ++ a2._1 ++ a3._1) -> (a1._2 ++ a2._2 ++ a3._2) }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed"))) } def withPrefix(prefix: String): ObjectMapping3[R, A1, A2, A3] = addPrefix(prefix).map(newKey => this.copy(key = newKey)).getOrElse(this) def verifying(addConstraints: Constraint[R]*): ObjectMapping3[R, A1, A2, A3] = { this.copy(constraints = constraints ++ addConstraints.toSeq) } val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings } case class ObjectMapping4[R, A1, A2, A3, A4](apply: Function4[A1, A2, A3, A4, R], unapply: Function1[R, Option[(A1, A2, A3, A4)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping { val field1 = f1._2.withPrefix(f1._1).withPrefix(key) val field2 = f2._2.withPrefix(f2._1).withPrefix(key) val field3 = f3._2.withPrefix(f3._1).withPrefix(key) val field4 = f4._2.withPrefix(f4._1).withPrefix(key) def bind(data: Map[String, String]): Either[Seq[FormError], R] = { merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data)) match { case Left(errors) => Left(errors) case Right(values) => { applyConstraints(apply( values(0).asInstanceOf[A1], values(1).asInstanceOf[A2], values(2).asInstanceOf[A3], values(3).asInstanceOf[A4] )) } } } def unbind(value: R): Map[String, String] = { unapply(value).map { fields => val (v1, v2, v3, v4) = fields field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) }.getOrElse(Map.empty) } def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = { unapply(value).map { fields => val (v1, v2, v3, v4) = fields val a1 = field1.unbindAndValidate(v1) val a2 = field2.unbindAndValidate(v2) val a3 = field3.unbindAndValidate(v3) val a4 = field4.unbindAndValidate(v4) (a1._1 ++ a2._1 ++ a3._1 ++ a4._1) -> (a1._2 ++ a2._2 ++ a3._2 ++ a4._2) }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed"))) } def withPrefix(prefix: String): ObjectMapping4[R, A1, A2, A3, A4] = addPrefix(prefix).map(newKey => this.copy(key = newKey)).getOrElse(this) def verifying(addConstraints: Constraint[R]*): ObjectMapping4[R, A1, A2, A3, A4] = { this.copy(constraints = constraints ++ addConstraints.toSeq) } val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings } case class ObjectMapping5[R, A1, A2, A3, A4, A5](apply: Function5[A1, A2, A3, A4, A5, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping { val field1 = f1._2.withPrefix(f1._1).withPrefix(key) val field2 = f2._2.withPrefix(f2._1).withPrefix(key) val field3 = f3._2.withPrefix(f3._1).withPrefix(key) val field4 = f4._2.withPrefix(f4._1).withPrefix(key) val field5 = f5._2.withPrefix(f5._1).withPrefix(key) def bind(data: Map[String, String]): Either[Seq[FormError], R] = { merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data)) match { case Left(errors) => Left(errors) case Right(values) => { applyConstraints(apply( values(0).asInstanceOf[A1], values(1).asInstanceOf[A2], values(2).asInstanceOf[A3], values(3).asInstanceOf[A4], values(4).asInstanceOf[A5] )) } } } def unbind(value: R): Map[String, String] = { unapply(value).map { fields => val (v1, v2, v3, v4, v5) = fields field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) }.getOrElse(Map.empty) } def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = { unapply(value).map { fields => val (v1, v2, v3, v4, v5) = fields val a1 = field1.unbindAndValidate(v1) val a2 = field2.unbindAndValidate(v2) val a3 = field3.unbindAndValidate(v3) val a4 = field4.unbindAndValidate(v4) val a5 = field5.unbindAndValidate(v5) (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1) -> (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2) }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed"))) } def withPrefix(prefix: String): ObjectMapping5[R, A1, A2, A3, A4, A5] = addPrefix(prefix).map(newKey => this.copy(key = newKey)).getOrElse(this) def verifying(addConstraints: Constraint[R]*): ObjectMapping5[R, A1, A2, A3, A4, A5] = { this.copy(constraints = constraints ++ addConstraints.toSeq) } val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings } case class ObjectMapping6[R, A1, A2, A3, A4, A5, A6](apply: Function6[A1, A2, A3, A4, A5, A6, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping { val field1 = f1._2.withPrefix(f1._1).withPrefix(key) val field2 = f2._2.withPrefix(f2._1).withPrefix(key) val field3 = f3._2.withPrefix(f3._1).withPrefix(key) val field4 = f4._2.withPrefix(f4._1).withPrefix(key) val field5 = f5._2.withPrefix(f5._1).withPrefix(key) val field6 = f6._2.withPrefix(f6._1).withPrefix(key) def bind(data: Map[String, String]): Either[Seq[FormError], R] = { merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data)) match { case Left(errors) => Left(errors) case Right(values) => { applyConstraints(apply( values(0).asInstanceOf[A1], values(1).asInstanceOf[A2], values(2).asInstanceOf[A3], values(3).asInstanceOf[A4], values(4).asInstanceOf[A5], values(5).asInstanceOf[A6] )) } } } def unbind(value: R): Map[String, String] = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6) = fields field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) }.getOrElse(Map.empty) } def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6) = fields val a1 = field1.unbindAndValidate(v1) val a2 = field2.unbindAndValidate(v2) val a3 = field3.unbindAndValidate(v3) val a4 = field4.unbindAndValidate(v4) val a5 = field5.unbindAndValidate(v5) val a6 = field6.unbindAndValidate(v6) (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1) -> (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2) }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed"))) } def withPrefix(prefix: String): ObjectMapping6[R, A1, A2, A3, A4, A5, A6] = addPrefix(prefix).map(newKey => this.copy(key = newKey)).getOrElse(this) def verifying(addConstraints: Constraint[R]*): ObjectMapping6[R, A1, A2, A3, A4, A5, A6] = { this.copy(constraints = constraints ++ addConstraints.toSeq) } val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings } case class ObjectMapping7[R, A1, A2, A3, A4, A5, A6, A7](apply: Function7[A1, A2, A3, A4, A5, A6, A7, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping { val field1 = f1._2.withPrefix(f1._1).withPrefix(key) val field2 = f2._2.withPrefix(f2._1).withPrefix(key) val field3 = f3._2.withPrefix(f3._1).withPrefix(key) val field4 = f4._2.withPrefix(f4._1).withPrefix(key) val field5 = f5._2.withPrefix(f5._1).withPrefix(key) val field6 = f6._2.withPrefix(f6._1).withPrefix(key) val field7 = f7._2.withPrefix(f7._1).withPrefix(key) def bind(data: Map[String, String]): Either[Seq[FormError], R] = { merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data)) match { case Left(errors) => Left(errors) case Right(values) => { applyConstraints(apply( values(0).asInstanceOf[A1], values(1).asInstanceOf[A2], values(2).asInstanceOf[A3], values(3).asInstanceOf[A4], values(4).asInstanceOf[A5], values(5).asInstanceOf[A6], values(6).asInstanceOf[A7] )) } } } def unbind(value: R): Map[String, String] = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6, v7) = fields field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) }.getOrElse(Map.empty) } def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6, v7) = fields val a1 = field1.unbindAndValidate(v1) val a2 = field2.unbindAndValidate(v2) val a3 = field3.unbindAndValidate(v3) val a4 = field4.unbindAndValidate(v4) val a5 = field5.unbindAndValidate(v5) val a6 = field6.unbindAndValidate(v6) val a7 = field7.unbindAndValidate(v7) (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1) -> (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2) }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed"))) } def withPrefix(prefix: String): ObjectMapping7[R, A1, A2, A3, A4, A5, A6, A7] = addPrefix(prefix).map(newKey => this.copy(key = newKey)).getOrElse(this) def verifying(addConstraints: Constraint[R]*): ObjectMapping7[R, A1, A2, A3, A4, A5, A6, A7] = { this.copy(constraints = constraints ++ addConstraints.toSeq) } val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings } case class ObjectMapping8[R, A1, A2, A3, A4, A5, A6, A7, A8](apply: Function8[A1, A2, A3, A4, A5, A6, A7, A8, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping { val field1 = f1._2.withPrefix(f1._1).withPrefix(key) val field2 = f2._2.withPrefix(f2._1).withPrefix(key) val field3 = f3._2.withPrefix(f3._1).withPrefix(key) val field4 = f4._2.withPrefix(f4._1).withPrefix(key) val field5 = f5._2.withPrefix(f5._1).withPrefix(key) val field6 = f6._2.withPrefix(f6._1).withPrefix(key) val field7 = f7._2.withPrefix(f7._1).withPrefix(key) val field8 = f8._2.withPrefix(f8._1).withPrefix(key) def bind(data: Map[String, String]): Either[Seq[FormError], R] = { merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data)) match { case Left(errors) => Left(errors) case Right(values) => { applyConstraints(apply( values(0).asInstanceOf[A1], values(1).asInstanceOf[A2], values(2).asInstanceOf[A3], values(3).asInstanceOf[A4], values(4).asInstanceOf[A5], values(5).asInstanceOf[A6], values(6).asInstanceOf[A7], values(7).asInstanceOf[A8] )) } } } def unbind(value: R): Map[String, String] = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6, v7, v8) = fields field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8) }.getOrElse(Map.empty) } def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6, v7, v8) = fields val a1 = field1.unbindAndValidate(v1) val a2 = field2.unbindAndValidate(v2) val a3 = field3.unbindAndValidate(v3) val a4 = field4.unbindAndValidate(v4) val a5 = field5.unbindAndValidate(v5) val a6 = field6.unbindAndValidate(v6) val a7 = field7.unbindAndValidate(v7) val a8 = field8.unbindAndValidate(v8) (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1) -> (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2) }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed"))) } def withPrefix(prefix: String): ObjectMapping8[R, A1, A2, A3, A4, A5, A6, A7, A8] = addPrefix(prefix).map(newKey => this.copy(key = newKey)).getOrElse(this) def verifying(addConstraints: Constraint[R]*): ObjectMapping8[R, A1, A2, A3, A4, A5, A6, A7, A8] = { this.copy(constraints = constraints ++ addConstraints.toSeq) } val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings } case class ObjectMapping9[R, A1, A2, A3, A4, A5, A6, A7, A8, A9](apply: Function9[A1, A2, A3, A4, A5, A6, A7, A8, A9, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8, A9)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), f9: (String, Mapping[A9]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping { val field1 = f1._2.withPrefix(f1._1).withPrefix(key) val field2 = f2._2.withPrefix(f2._1).withPrefix(key) val field3 = f3._2.withPrefix(f3._1).withPrefix(key) val field4 = f4._2.withPrefix(f4._1).withPrefix(key) val field5 = f5._2.withPrefix(f5._1).withPrefix(key) val field6 = f6._2.withPrefix(f6._1).withPrefix(key) val field7 = f7._2.withPrefix(f7._1).withPrefix(key) val field8 = f8._2.withPrefix(f8._1).withPrefix(key) val field9 = f9._2.withPrefix(f9._1).withPrefix(key) def bind(data: Map[String, String]): Either[Seq[FormError], R] = { merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data), field9.bind(data)) match { case Left(errors) => Left(errors) case Right(values) => { applyConstraints(apply( values(0).asInstanceOf[A1], values(1).asInstanceOf[A2], values(2).asInstanceOf[A3], values(3).asInstanceOf[A4], values(4).asInstanceOf[A5], values(5).asInstanceOf[A6], values(6).asInstanceOf[A7], values(7).asInstanceOf[A8], values(8).asInstanceOf[A9] )) } } } def unbind(value: R): Map[String, String] = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6, v7, v8, v9) = fields field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8) ++ field9.unbind(v9) }.getOrElse(Map.empty) } def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6, v7, v8, v9) = fields val a1 = field1.unbindAndValidate(v1) val a2 = field2.unbindAndValidate(v2) val a3 = field3.unbindAndValidate(v3) val a4 = field4.unbindAndValidate(v4) val a5 = field5.unbindAndValidate(v5) val a6 = field6.unbindAndValidate(v6) val a7 = field7.unbindAndValidate(v7) val a8 = field8.unbindAndValidate(v8) val a9 = field9.unbindAndValidate(v9) (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1 ++ a9._1) -> (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2 ++ a9._2) }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed"))) } def withPrefix(prefix: String): ObjectMapping9[R, A1, A2, A3, A4, A5, A6, A7, A8, A9] = addPrefix(prefix).map(newKey => this.copy(key = newKey)).getOrElse(this) def verifying(addConstraints: Constraint[R]*): ObjectMapping9[R, A1, A2, A3, A4, A5, A6, A7, A8, A9] = { this.copy(constraints = constraints ++ addConstraints.toSeq) } val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings ++ field9.mappings } case class ObjectMapping10[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10](apply: Function10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), f9: (String, Mapping[A9]), f10: (String, Mapping[A10]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping { val field1 = f1._2.withPrefix(f1._1).withPrefix(key) val field2 = f2._2.withPrefix(f2._1).withPrefix(key) val field3 = f3._2.withPrefix(f3._1).withPrefix(key) val field4 = f4._2.withPrefix(f4._1).withPrefix(key) val field5 = f5._2.withPrefix(f5._1).withPrefix(key) val field6 = f6._2.withPrefix(f6._1).withPrefix(key) val field7 = f7._2.withPrefix(f7._1).withPrefix(key) val field8 = f8._2.withPrefix(f8._1).withPrefix(key) val field9 = f9._2.withPrefix(f9._1).withPrefix(key) val field10 = f10._2.withPrefix(f10._1).withPrefix(key) def bind(data: Map[String, String]): Either[Seq[FormError], R] = { merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data), field9.bind(data), field10.bind(data)) match { case Left(errors) => Left(errors) case Right(values) => { applyConstraints(apply( values(0).asInstanceOf[A1], values(1).asInstanceOf[A2], values(2).asInstanceOf[A3], values(3).asInstanceOf[A4], values(4).asInstanceOf[A5], values(5).asInstanceOf[A6], values(6).asInstanceOf[A7], values(7).asInstanceOf[A8], values(8).asInstanceOf[A9], values(9).asInstanceOf[A10] )) } } } def unbind(value: R): Map[String, String] = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) = fields field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8) ++ field9.unbind(v9) ++ field10.unbind(v10) }.getOrElse(Map.empty) } def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) = fields val a1 = field1.unbindAndValidate(v1) val a2 = field2.unbindAndValidate(v2) val a3 = field3.unbindAndValidate(v3) val a4 = field4.unbindAndValidate(v4) val a5 = field5.unbindAndValidate(v5) val a6 = field6.unbindAndValidate(v6) val a7 = field7.unbindAndValidate(v7) val a8 = field8.unbindAndValidate(v8) val a9 = field9.unbindAndValidate(v9) val a10 = field10.unbindAndValidate(v10) (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1 ++ a9._1 ++ a10._1) -> (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2 ++ a9._2 ++ a10._2) }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed"))) } def withPrefix(prefix: String): ObjectMapping10[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10] = addPrefix(prefix).map(newKey => this.copy(key = newKey)).getOrElse(this) def verifying(addConstraints: Constraint[R]*): ObjectMapping10[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10] = { this.copy(constraints = constraints ++ addConstraints.toSeq) } val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings ++ field9.mappings ++ field10.mappings } case class ObjectMapping11[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11](apply: Function11[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), f9: (String, Mapping[A9]), f10: (String, Mapping[A10]), f11: (String, Mapping[A11]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping { val field1 = f1._2.withPrefix(f1._1).withPrefix(key) val field2 = f2._2.withPrefix(f2._1).withPrefix(key) val field3 = f3._2.withPrefix(f3._1).withPrefix(key) val field4 = f4._2.withPrefix(f4._1).withPrefix(key) val field5 = f5._2.withPrefix(f5._1).withPrefix(key) val field6 = f6._2.withPrefix(f6._1).withPrefix(key) val field7 = f7._2.withPrefix(f7._1).withPrefix(key) val field8 = f8._2.withPrefix(f8._1).withPrefix(key) val field9 = f9._2.withPrefix(f9._1).withPrefix(key) val field10 = f10._2.withPrefix(f10._1).withPrefix(key) val field11 = f11._2.withPrefix(f11._1).withPrefix(key) def bind(data: Map[String, String]): Either[Seq[FormError], R] = { merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data), field9.bind(data), field10.bind(data), field11.bind(data)) match { case Left(errors) => Left(errors) case Right(values) => { applyConstraints(apply( values(0).asInstanceOf[A1], values(1).asInstanceOf[A2], values(2).asInstanceOf[A3], values(3).asInstanceOf[A4], values(4).asInstanceOf[A5], values(5).asInstanceOf[A6], values(6).asInstanceOf[A7], values(7).asInstanceOf[A8], values(8).asInstanceOf[A9], values(9).asInstanceOf[A10], values(10).asInstanceOf[A11] )) } } } def unbind(value: R): Map[String, String] = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) = fields field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8) ++ field9.unbind(v9) ++ field10.unbind(v10) ++ field11.unbind(v11) }.getOrElse(Map.empty) } def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) = fields val a1 = field1.unbindAndValidate(v1) val a2 = field2.unbindAndValidate(v2) val a3 = field3.unbindAndValidate(v3) val a4 = field4.unbindAndValidate(v4) val a5 = field5.unbindAndValidate(v5) val a6 = field6.unbindAndValidate(v6) val a7 = field7.unbindAndValidate(v7) val a8 = field8.unbindAndValidate(v8) val a9 = field9.unbindAndValidate(v9) val a10 = field10.unbindAndValidate(v10) val a11 = field11.unbindAndValidate(v11) (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1 ++ a9._1 ++ a10._1 ++ a11._1) -> (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2 ++ a9._2 ++ a10._2 ++ a11._2) }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed"))) } def withPrefix(prefix: String): ObjectMapping11[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11] = addPrefix(prefix).map(newKey => this.copy(key = newKey)).getOrElse(this) def verifying(addConstraints: Constraint[R]*): ObjectMapping11[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11] = { this.copy(constraints = constraints ++ addConstraints.toSeq) } val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings ++ field9.mappings ++ field10.mappings ++ field11.mappings } case class ObjectMapping12[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12](apply: Function12[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), f9: (String, Mapping[A9]), f10: (String, Mapping[A10]), f11: (String, Mapping[A11]), f12: (String, Mapping[A12]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping { val field1 = f1._2.withPrefix(f1._1).withPrefix(key) val field2 = f2._2.withPrefix(f2._1).withPrefix(key) val field3 = f3._2.withPrefix(f3._1).withPrefix(key) val field4 = f4._2.withPrefix(f4._1).withPrefix(key) val field5 = f5._2.withPrefix(f5._1).withPrefix(key) val field6 = f6._2.withPrefix(f6._1).withPrefix(key) val field7 = f7._2.withPrefix(f7._1).withPrefix(key) val field8 = f8._2.withPrefix(f8._1).withPrefix(key) val field9 = f9._2.withPrefix(f9._1).withPrefix(key) val field10 = f10._2.withPrefix(f10._1).withPrefix(key) val field11 = f11._2.withPrefix(f11._1).withPrefix(key) val field12 = f12._2.withPrefix(f12._1).withPrefix(key) def bind(data: Map[String, String]): Either[Seq[FormError], R] = { merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data), field9.bind(data), field10.bind(data), field11.bind(data), field12.bind(data)) match { case Left(errors) => Left(errors) case Right(values) => { applyConstraints(apply( values(0).asInstanceOf[A1], values(1).asInstanceOf[A2], values(2).asInstanceOf[A3], values(3).asInstanceOf[A4], values(4).asInstanceOf[A5], values(5).asInstanceOf[A6], values(6).asInstanceOf[A7], values(7).asInstanceOf[A8], values(8).asInstanceOf[A9], values(9).asInstanceOf[A10], values(10).asInstanceOf[A11], values(11).asInstanceOf[A12] )) } } } def unbind(value: R): Map[String, String] = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) = fields field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8) ++ field9.unbind(v9) ++ field10.unbind(v10) ++ field11.unbind(v11) ++ field12.unbind(v12) }.getOrElse(Map.empty) } def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) = fields val a1 = field1.unbindAndValidate(v1) val a2 = field2.unbindAndValidate(v2) val a3 = field3.unbindAndValidate(v3) val a4 = field4.unbindAndValidate(v4) val a5 = field5.unbindAndValidate(v5) val a6 = field6.unbindAndValidate(v6) val a7 = field7.unbindAndValidate(v7) val a8 = field8.unbindAndValidate(v8) val a9 = field9.unbindAndValidate(v9) val a10 = field10.unbindAndValidate(v10) val a11 = field11.unbindAndValidate(v11) val a12 = field12.unbindAndValidate(v12) (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1 ++ a9._1 ++ a10._1 ++ a11._1 ++ a12._1) -> (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2 ++ a9._2 ++ a10._2 ++ a11._2 ++ a12._2) }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed"))) } def withPrefix(prefix: String): ObjectMapping12[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12] = addPrefix(prefix).map(newKey => this.copy(key = newKey)).getOrElse(this) def verifying(addConstraints: Constraint[R]*): ObjectMapping12[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12] = { this.copy(constraints = constraints ++ addConstraints.toSeq) } val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings ++ field9.mappings ++ field10.mappings ++ field11.mappings ++ field12.mappings } case class ObjectMapping13[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13](apply: Function13[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), f9: (String, Mapping[A9]), f10: (String, Mapping[A10]), f11: (String, Mapping[A11]), f12: (String, Mapping[A12]), f13: (String, Mapping[A13]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping { val field1 = f1._2.withPrefix(f1._1).withPrefix(key) val field2 = f2._2.withPrefix(f2._1).withPrefix(key) val field3 = f3._2.withPrefix(f3._1).withPrefix(key) val field4 = f4._2.withPrefix(f4._1).withPrefix(key) val field5 = f5._2.withPrefix(f5._1).withPrefix(key) val field6 = f6._2.withPrefix(f6._1).withPrefix(key) val field7 = f7._2.withPrefix(f7._1).withPrefix(key) val field8 = f8._2.withPrefix(f8._1).withPrefix(key) val field9 = f9._2.withPrefix(f9._1).withPrefix(key) val field10 = f10._2.withPrefix(f10._1).withPrefix(key) val field11 = f11._2.withPrefix(f11._1).withPrefix(key) val field12 = f12._2.withPrefix(f12._1).withPrefix(key) val field13 = f13._2.withPrefix(f13._1).withPrefix(key) def bind(data: Map[String, String]): Either[Seq[FormError], R] = { merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data), field9.bind(data), field10.bind(data), field11.bind(data), field12.bind(data), field13.bind(data)) match { case Left(errors) => Left(errors) case Right(values) => { applyConstraints(apply( values(0).asInstanceOf[A1], values(1).asInstanceOf[A2], values(2).asInstanceOf[A3], values(3).asInstanceOf[A4], values(4).asInstanceOf[A5], values(5).asInstanceOf[A6], values(6).asInstanceOf[A7], values(7).asInstanceOf[A8], values(8).asInstanceOf[A9], values(9).asInstanceOf[A10], values(10).asInstanceOf[A11], values(11).asInstanceOf[A12], values(12).asInstanceOf[A13] )) } } } def unbind(value: R): Map[String, String] = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) = fields field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8) ++ field9.unbind(v9) ++ field10.unbind(v10) ++ field11.unbind(v11) ++ field12.unbind(v12) ++ field13.unbind(v13) }.getOrElse(Map.empty) } def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) = fields val a1 = field1.unbindAndValidate(v1) val a2 = field2.unbindAndValidate(v2) val a3 = field3.unbindAndValidate(v3) val a4 = field4.unbindAndValidate(v4) val a5 = field5.unbindAndValidate(v5) val a6 = field6.unbindAndValidate(v6) val a7 = field7.unbindAndValidate(v7) val a8 = field8.unbindAndValidate(v8) val a9 = field9.unbindAndValidate(v9) val a10 = field10.unbindAndValidate(v10) val a11 = field11.unbindAndValidate(v11) val a12 = field12.unbindAndValidate(v12) val a13 = field13.unbindAndValidate(v13) (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1 ++ a9._1 ++ a10._1 ++ a11._1 ++ a12._1 ++ a13._1) -> (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2 ++ a9._2 ++ a10._2 ++ a11._2 ++ a12._2 ++ a13._2) }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed"))) } def withPrefix(prefix: String): ObjectMapping13[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13] = addPrefix(prefix).map(newKey => this.copy(key = newKey)).getOrElse(this) def verifying(addConstraints: Constraint[R]*): ObjectMapping13[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13] = { this.copy(constraints = constraints ++ addConstraints.toSeq) } val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings ++ field9.mappings ++ field10.mappings ++ field11.mappings ++ field12.mappings ++ field13.mappings } case class ObjectMapping14[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14](apply: Function14[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), f9: (String, Mapping[A9]), f10: (String, Mapping[A10]), f11: (String, Mapping[A11]), f12: (String, Mapping[A12]), f13: (String, Mapping[A13]), f14: (String, Mapping[A14]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping { val field1 = f1._2.withPrefix(f1._1).withPrefix(key) val field2 = f2._2.withPrefix(f2._1).withPrefix(key) val field3 = f3._2.withPrefix(f3._1).withPrefix(key) val field4 = f4._2.withPrefix(f4._1).withPrefix(key) val field5 = f5._2.withPrefix(f5._1).withPrefix(key) val field6 = f6._2.withPrefix(f6._1).withPrefix(key) val field7 = f7._2.withPrefix(f7._1).withPrefix(key) val field8 = f8._2.withPrefix(f8._1).withPrefix(key) val field9 = f9._2.withPrefix(f9._1).withPrefix(key) val field10 = f10._2.withPrefix(f10._1).withPrefix(key) val field11 = f11._2.withPrefix(f11._1).withPrefix(key) val field12 = f12._2.withPrefix(f12._1).withPrefix(key) val field13 = f13._2.withPrefix(f13._1).withPrefix(key) val field14 = f14._2.withPrefix(f14._1).withPrefix(key) def bind(data: Map[String, String]): Either[Seq[FormError], R] = { merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data), field9.bind(data), field10.bind(data), field11.bind(data), field12.bind(data), field13.bind(data), field14.bind(data)) match { case Left(errors) => Left(errors) case Right(values) => { applyConstraints(apply( values(0).asInstanceOf[A1], values(1).asInstanceOf[A2], values(2).asInstanceOf[A3], values(3).asInstanceOf[A4], values(4).asInstanceOf[A5], values(5).asInstanceOf[A6], values(6).asInstanceOf[A7], values(7).asInstanceOf[A8], values(8).asInstanceOf[A9], values(9).asInstanceOf[A10], values(10).asInstanceOf[A11], values(11).asInstanceOf[A12], values(12).asInstanceOf[A13], values(13).asInstanceOf[A14] )) } } } def unbind(value: R): Map[String, String] = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) = fields field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8) ++ field9.unbind(v9) ++ field10.unbind(v10) ++ field11.unbind(v11) ++ field12.unbind(v12) ++ field13.unbind(v13) ++ field14.unbind(v14) }.getOrElse(Map.empty) } def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) = fields val a1 = field1.unbindAndValidate(v1) val a2 = field2.unbindAndValidate(v2) val a3 = field3.unbindAndValidate(v3) val a4 = field4.unbindAndValidate(v4) val a5 = field5.unbindAndValidate(v5) val a6 = field6.unbindAndValidate(v6) val a7 = field7.unbindAndValidate(v7) val a8 = field8.unbindAndValidate(v8) val a9 = field9.unbindAndValidate(v9) val a10 = field10.unbindAndValidate(v10) val a11 = field11.unbindAndValidate(v11) val a12 = field12.unbindAndValidate(v12) val a13 = field13.unbindAndValidate(v13) val a14 = field14.unbindAndValidate(v14) (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1 ++ a9._1 ++ a10._1 ++ a11._1 ++ a12._1 ++ a13._1 ++ a14._1) -> (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2 ++ a9._2 ++ a10._2 ++ a11._2 ++ a12._2 ++ a13._2 ++ a14._2) }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed"))) } def withPrefix(prefix: String): ObjectMapping14[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14] = addPrefix(prefix).map(newKey => this.copy(key = newKey)).getOrElse(this) def verifying(addConstraints: Constraint[R]*): ObjectMapping14[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14] = { this.copy(constraints = constraints ++ addConstraints.toSeq) } val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings ++ field9.mappings ++ field10.mappings ++ field11.mappings ++ field12.mappings ++ field13.mappings ++ field14.mappings } case class ObjectMapping15[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15](apply: Function15[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), f9: (String, Mapping[A9]), f10: (String, Mapping[A10]), f11: (String, Mapping[A11]), f12: (String, Mapping[A12]), f13: (String, Mapping[A13]), f14: (String, Mapping[A14]), f15: (String, Mapping[A15]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping { val field1 = f1._2.withPrefix(f1._1).withPrefix(key) val field2 = f2._2.withPrefix(f2._1).withPrefix(key) val field3 = f3._2.withPrefix(f3._1).withPrefix(key) val field4 = f4._2.withPrefix(f4._1).withPrefix(key) val field5 = f5._2.withPrefix(f5._1).withPrefix(key) val field6 = f6._2.withPrefix(f6._1).withPrefix(key) val field7 = f7._2.withPrefix(f7._1).withPrefix(key) val field8 = f8._2.withPrefix(f8._1).withPrefix(key) val field9 = f9._2.withPrefix(f9._1).withPrefix(key) val field10 = f10._2.withPrefix(f10._1).withPrefix(key) val field11 = f11._2.withPrefix(f11._1).withPrefix(key) val field12 = f12._2.withPrefix(f12._1).withPrefix(key) val field13 = f13._2.withPrefix(f13._1).withPrefix(key) val field14 = f14._2.withPrefix(f14._1).withPrefix(key) val field15 = f15._2.withPrefix(f15._1).withPrefix(key) def bind(data: Map[String, String]): Either[Seq[FormError], R] = { merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data), field9.bind(data), field10.bind(data), field11.bind(data), field12.bind(data), field13.bind(data), field14.bind(data), field15.bind(data)) match { case Left(errors) => Left(errors) case Right(values) => { applyConstraints(apply( values(0).asInstanceOf[A1], values(1).asInstanceOf[A2], values(2).asInstanceOf[A3], values(3).asInstanceOf[A4], values(4).asInstanceOf[A5], values(5).asInstanceOf[A6], values(6).asInstanceOf[A7], values(7).asInstanceOf[A8], values(8).asInstanceOf[A9], values(9).asInstanceOf[A10], values(10).asInstanceOf[A11], values(11).asInstanceOf[A12], values(12).asInstanceOf[A13], values(13).asInstanceOf[A14], values(14).asInstanceOf[A15] )) } } } def unbind(value: R): Map[String, String] = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) = fields field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8) ++ field9.unbind(v9) ++ field10.unbind(v10) ++ field11.unbind(v11) ++ field12.unbind(v12) ++ field13.unbind(v13) ++ field14.unbind(v14) ++ field15.unbind(v15) }.getOrElse(Map.empty) } def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) = fields val a1 = field1.unbindAndValidate(v1) val a2 = field2.unbindAndValidate(v2) val a3 = field3.unbindAndValidate(v3) val a4 = field4.unbindAndValidate(v4) val a5 = field5.unbindAndValidate(v5) val a6 = field6.unbindAndValidate(v6) val a7 = field7.unbindAndValidate(v7) val a8 = field8.unbindAndValidate(v8) val a9 = field9.unbindAndValidate(v9) val a10 = field10.unbindAndValidate(v10) val a11 = field11.unbindAndValidate(v11) val a12 = field12.unbindAndValidate(v12) val a13 = field13.unbindAndValidate(v13) val a14 = field14.unbindAndValidate(v14) val a15 = field15.unbindAndValidate(v15) (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1 ++ a9._1 ++ a10._1 ++ a11._1 ++ a12._1 ++ a13._1 ++ a14._1 ++ a15._1) -> (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2 ++ a9._2 ++ a10._2 ++ a11._2 ++ a12._2 ++ a13._2 ++ a14._2 ++ a15._2) }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed"))) } def withPrefix(prefix: String): ObjectMapping15[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15] = addPrefix(prefix).map(newKey => this.copy(key = newKey)).getOrElse(this) def verifying(addConstraints: Constraint[R]*): ObjectMapping15[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15] = { this.copy(constraints = constraints ++ addConstraints.toSeq) } val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings ++ field9.mappings ++ field10.mappings ++ field11.mappings ++ field12.mappings ++ field13.mappings ++ field14.mappings ++ field15.mappings } case class ObjectMapping16[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16](apply: Function16[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), f9: (String, Mapping[A9]), f10: (String, Mapping[A10]), f11: (String, Mapping[A11]), f12: (String, Mapping[A12]), f13: (String, Mapping[A13]), f14: (String, Mapping[A14]), f15: (String, Mapping[A15]), f16: (String, Mapping[A16]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping { val field1 = f1._2.withPrefix(f1._1).withPrefix(key) val field2 = f2._2.withPrefix(f2._1).withPrefix(key) val field3 = f3._2.withPrefix(f3._1).withPrefix(key) val field4 = f4._2.withPrefix(f4._1).withPrefix(key) val field5 = f5._2.withPrefix(f5._1).withPrefix(key) val field6 = f6._2.withPrefix(f6._1).withPrefix(key) val field7 = f7._2.withPrefix(f7._1).withPrefix(key) val field8 = f8._2.withPrefix(f8._1).withPrefix(key) val field9 = f9._2.withPrefix(f9._1).withPrefix(key) val field10 = f10._2.withPrefix(f10._1).withPrefix(key) val field11 = f11._2.withPrefix(f11._1).withPrefix(key) val field12 = f12._2.withPrefix(f12._1).withPrefix(key) val field13 = f13._2.withPrefix(f13._1).withPrefix(key) val field14 = f14._2.withPrefix(f14._1).withPrefix(key) val field15 = f15._2.withPrefix(f15._1).withPrefix(key) val field16 = f16._2.withPrefix(f16._1).withPrefix(key) def bind(data: Map[String, String]): Either[Seq[FormError], R] = { merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data), field9.bind(data), field10.bind(data), field11.bind(data), field12.bind(data), field13.bind(data), field14.bind(data), field15.bind(data), field16.bind(data)) match { case Left(errors) => Left(errors) case Right(values) => { applyConstraints(apply( values(0).asInstanceOf[A1], values(1).asInstanceOf[A2], values(2).asInstanceOf[A3], values(3).asInstanceOf[A4], values(4).asInstanceOf[A5], values(5).asInstanceOf[A6], values(6).asInstanceOf[A7], values(7).asInstanceOf[A8], values(8).asInstanceOf[A9], values(9).asInstanceOf[A10], values(10).asInstanceOf[A11], values(11).asInstanceOf[A12], values(12).asInstanceOf[A13], values(13).asInstanceOf[A14], values(14).asInstanceOf[A15], values(15).asInstanceOf[A16] )) } } } def unbind(value: R): Map[String, String] = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) = fields field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8) ++ field9.unbind(v9) ++ field10.unbind(v10) ++ field11.unbind(v11) ++ field12.unbind(v12) ++ field13.unbind(v13) ++ field14.unbind(v14) ++ field15.unbind(v15) ++ field16.unbind(v16) }.getOrElse(Map.empty) } def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) = fields val a1 = field1.unbindAndValidate(v1) val a2 = field2.unbindAndValidate(v2) val a3 = field3.unbindAndValidate(v3) val a4 = field4.unbindAndValidate(v4) val a5 = field5.unbindAndValidate(v5) val a6 = field6.unbindAndValidate(v6) val a7 = field7.unbindAndValidate(v7) val a8 = field8.unbindAndValidate(v8) val a9 = field9.unbindAndValidate(v9) val a10 = field10.unbindAndValidate(v10) val a11 = field11.unbindAndValidate(v11) val a12 = field12.unbindAndValidate(v12) val a13 = field13.unbindAndValidate(v13) val a14 = field14.unbindAndValidate(v14) val a15 = field15.unbindAndValidate(v15) val a16 = field16.unbindAndValidate(v16) (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1 ++ a9._1 ++ a10._1 ++ a11._1 ++ a12._1 ++ a13._1 ++ a14._1 ++ a15._1 ++ a16._1) -> (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2 ++ a9._2 ++ a10._2 ++ a11._2 ++ a12._2 ++ a13._2 ++ a14._2 ++ a15._2 ++ a16._2) }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed"))) } def withPrefix(prefix: String): ObjectMapping16[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16] = addPrefix(prefix).map(newKey => this.copy(key = newKey)).getOrElse(this) def verifying(addConstraints: Constraint[R]*): ObjectMapping16[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16] = { this.copy(constraints = constraints ++ addConstraints.toSeq) } val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings ++ field9.mappings ++ field10.mappings ++ field11.mappings ++ field12.mappings ++ field13.mappings ++ field14.mappings ++ field15.mappings ++ field16.mappings } case class ObjectMapping17[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17](apply: Function17[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), f9: (String, Mapping[A9]), f10: (String, Mapping[A10]), f11: (String, Mapping[A11]), f12: (String, Mapping[A12]), f13: (String, Mapping[A13]), f14: (String, Mapping[A14]), f15: (String, Mapping[A15]), f16: (String, Mapping[A16]), f17: (String, Mapping[A17]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping { val field1 = f1._2.withPrefix(f1._1).withPrefix(key) val field2 = f2._2.withPrefix(f2._1).withPrefix(key) val field3 = f3._2.withPrefix(f3._1).withPrefix(key) val field4 = f4._2.withPrefix(f4._1).withPrefix(key) val field5 = f5._2.withPrefix(f5._1).withPrefix(key) val field6 = f6._2.withPrefix(f6._1).withPrefix(key) val field7 = f7._2.withPrefix(f7._1).withPrefix(key) val field8 = f8._2.withPrefix(f8._1).withPrefix(key) val field9 = f9._2.withPrefix(f9._1).withPrefix(key) val field10 = f10._2.withPrefix(f10._1).withPrefix(key) val field11 = f11._2.withPrefix(f11._1).withPrefix(key) val field12 = f12._2.withPrefix(f12._1).withPrefix(key) val field13 = f13._2.withPrefix(f13._1).withPrefix(key) val field14 = f14._2.withPrefix(f14._1).withPrefix(key) val field15 = f15._2.withPrefix(f15._1).withPrefix(key) val field16 = f16._2.withPrefix(f16._1).withPrefix(key) val field17 = f17._2.withPrefix(f17._1).withPrefix(key) def bind(data: Map[String, String]): Either[Seq[FormError], R] = { merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data), field9.bind(data), field10.bind(data), field11.bind(data), field12.bind(data), field13.bind(data), field14.bind(data), field15.bind(data), field16.bind(data), field17.bind(data)) match { case Left(errors) => Left(errors) case Right(values) => { applyConstraints(apply( values(0).asInstanceOf[A1], values(1).asInstanceOf[A2], values(2).asInstanceOf[A3], values(3).asInstanceOf[A4], values(4).asInstanceOf[A5], values(5).asInstanceOf[A6], values(6).asInstanceOf[A7], values(7).asInstanceOf[A8], values(8).asInstanceOf[A9], values(9).asInstanceOf[A10], values(10).asInstanceOf[A11], values(11).asInstanceOf[A12], values(12).asInstanceOf[A13], values(13).asInstanceOf[A14], values(14).asInstanceOf[A15], values(15).asInstanceOf[A16], values(16).asInstanceOf[A17] )) } } } def unbind(value: R): Map[String, String] = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) = fields field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8) ++ field9.unbind(v9) ++ field10.unbind(v10) ++ field11.unbind(v11) ++ field12.unbind(v12) ++ field13.unbind(v13) ++ field14.unbind(v14) ++ field15.unbind(v15) ++ field16.unbind(v16) ++ field17.unbind(v17) }.getOrElse(Map.empty) } def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) = fields val a1 = field1.unbindAndValidate(v1) val a2 = field2.unbindAndValidate(v2) val a3 = field3.unbindAndValidate(v3) val a4 = field4.unbindAndValidate(v4) val a5 = field5.unbindAndValidate(v5) val a6 = field6.unbindAndValidate(v6) val a7 = field7.unbindAndValidate(v7) val a8 = field8.unbindAndValidate(v8) val a9 = field9.unbindAndValidate(v9) val a10 = field10.unbindAndValidate(v10) val a11 = field11.unbindAndValidate(v11) val a12 = field12.unbindAndValidate(v12) val a13 = field13.unbindAndValidate(v13) val a14 = field14.unbindAndValidate(v14) val a15 = field15.unbindAndValidate(v15) val a16 = field16.unbindAndValidate(v16) val a17 = field17.unbindAndValidate(v17) (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1 ++ a9._1 ++ a10._1 ++ a11._1 ++ a12._1 ++ a13._1 ++ a14._1 ++ a15._1 ++ a16._1 ++ a17._1) -> (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2 ++ a9._2 ++ a10._2 ++ a11._2 ++ a12._2 ++ a13._2 ++ a14._2 ++ a15._2 ++ a16._2 ++ a17._2) }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed"))) } def withPrefix(prefix: String): ObjectMapping17[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17] = addPrefix(prefix).map(newKey => this.copy(key = newKey)).getOrElse(this) def verifying(addConstraints: Constraint[R]*): ObjectMapping17[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17] = { this.copy(constraints = constraints ++ addConstraints.toSeq) } val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings ++ field9.mappings ++ field10.mappings ++ field11.mappings ++ field12.mappings ++ field13.mappings ++ field14.mappings ++ field15.mappings ++ field16.mappings ++ field17.mappings } case class ObjectMapping18[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18](apply: Function18[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), f9: (String, Mapping[A9]), f10: (String, Mapping[A10]), f11: (String, Mapping[A11]), f12: (String, Mapping[A12]), f13: (String, Mapping[A13]), f14: (String, Mapping[A14]), f15: (String, Mapping[A15]), f16: (String, Mapping[A16]), f17: (String, Mapping[A17]), f18: (String, Mapping[A18]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping { val field1 = f1._2.withPrefix(f1._1).withPrefix(key) val field2 = f2._2.withPrefix(f2._1).withPrefix(key) val field3 = f3._2.withPrefix(f3._1).withPrefix(key) val field4 = f4._2.withPrefix(f4._1).withPrefix(key) val field5 = f5._2.withPrefix(f5._1).withPrefix(key) val field6 = f6._2.withPrefix(f6._1).withPrefix(key) val field7 = f7._2.withPrefix(f7._1).withPrefix(key) val field8 = f8._2.withPrefix(f8._1).withPrefix(key) val field9 = f9._2.withPrefix(f9._1).withPrefix(key) val field10 = f10._2.withPrefix(f10._1).withPrefix(key) val field11 = f11._2.withPrefix(f11._1).withPrefix(key) val field12 = f12._2.withPrefix(f12._1).withPrefix(key) val field13 = f13._2.withPrefix(f13._1).withPrefix(key) val field14 = f14._2.withPrefix(f14._1).withPrefix(key) val field15 = f15._2.withPrefix(f15._1).withPrefix(key) val field16 = f16._2.withPrefix(f16._1).withPrefix(key) val field17 = f17._2.withPrefix(f17._1).withPrefix(key) val field18 = f18._2.withPrefix(f18._1).withPrefix(key) def bind(data: Map[String, String]): Either[Seq[FormError], R] = { merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data), field9.bind(data), field10.bind(data), field11.bind(data), field12.bind(data), field13.bind(data), field14.bind(data), field15.bind(data), field16.bind(data), field17.bind(data), field18.bind(data)) match { case Left(errors) => Left(errors) case Right(values) => { applyConstraints(apply( values(0).asInstanceOf[A1], values(1).asInstanceOf[A2], values(2).asInstanceOf[A3], values(3).asInstanceOf[A4], values(4).asInstanceOf[A5], values(5).asInstanceOf[A6], values(6).asInstanceOf[A7], values(7).asInstanceOf[A8], values(8).asInstanceOf[A9], values(9).asInstanceOf[A10], values(10).asInstanceOf[A11], values(11).asInstanceOf[A12], values(12).asInstanceOf[A13], values(13).asInstanceOf[A14], values(14).asInstanceOf[A15], values(15).asInstanceOf[A16], values(16).asInstanceOf[A17], values(17).asInstanceOf[A18] )) } } } def unbind(value: R): Map[String, String] = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) = fields field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8) ++ field9.unbind(v9) ++ field10.unbind(v10) ++ field11.unbind(v11) ++ field12.unbind(v12) ++ field13.unbind(v13) ++ field14.unbind(v14) ++ field15.unbind(v15) ++ field16.unbind(v16) ++ field17.unbind(v17) ++ field18.unbind(v18) }.getOrElse(Map.empty) } def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = { unapply(value).map { fields => val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) = fields val a1 = field1.unbindAndValidate(v1) val a2 = field2.unbindAndValidate(v2) val a3 = field3.unbindAndValidate(v3) val a4 = field4.unbindAndValidate(v4) val a5 = field5.unbindAndValidate(v5) val a6 = field6.unbindAndValidate(v6) val a7 = field7.unbindAndValidate(v7) val a8 = field8.unbindAndValidate(v8) val a9 = field9.unbindAndValidate(v9) val a10 = field10.unbindAndValidate(v10) val a11 = field11.unbindAndValidate(v11) val a12 = field12.unbindAndValidate(v12) val a13 = field13.unbindAndValidate(v13) val a14 = field14.unbindAndValidate(v14) val a15 = field15.unbindAndValidate(v15) val a16 = field16.unbindAndValidate(v16) val a17 = field17.unbindAndValidate(v17) val a18 = field18.unbindAndValidate(v18) (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1 ++ a9._1 ++ a10._1 ++ a11._1 ++ a12._1 ++ a13._1 ++ a14._1 ++ a15._1 ++ a16._1 ++ a17._1 ++ a18._1) -> (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2 ++ a9._2 ++ a10._2 ++ a11._2 ++ a12._2 ++ a13._2 ++ a14._2 ++ a15._2 ++ a16._2 ++ a17._2 ++ a18._2) }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed"))) } def withPrefix(prefix: String): ObjectMapping18[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18] = addPrefix(prefix).map(newKey => this.copy(key = newKey)).getOrElse(this) def verifying(addConstraints: Constraint[R]*): ObjectMapping18[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18] = { this.copy(constraints = constraints ++ addConstraints.toSeq) } val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings ++ field9.mappings ++ field10.mappings ++ field11.mappings ++ field12.mappings ++ field13.mappings ++ field14.mappings ++ field15.mappings ++ field16.mappings ++ field17.mappings ++ field18.mappings } Other Play Framework source code examplesHere is a short list of links related to this Play Framework ObjectMappings.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.