Scala: Difference between revisions
No edit summary |
No edit summary |
||
| Line 9: | Line 9: | ||
Next, set up ~/.sbt/repositories with repos used by your team. | Next, set up ~/.sbt/repositories with repos used by your team. | ||
=== CAUSAM setup === | |||
For Causam, set up an AWS VPN to get on the stash network, then add these: | For Causam, set up an AWS VPN to get on the stash network, then add these: | ||
[repositories] | [repositories] | ||
| Line 19: | Line 20: | ||
cd ~/development/causam/git/causam-north-poller-scala | cd ~/development/causam/git/causam-north-poller-scala | ||
sbt compile | sbt compile | ||
=== CONTAINERS === | |||
Here are three ways to create a container from information in another. | |||
Immutable map (best): | |||
val andClause = unverifiedTileSet.map { un => | |||
and( | |||
Array( | |||
BSONDocument("x" -> BSONInteger(un.x)), | |||
BSONDocument("y" -> BSONInteger(un.y)) | |||
) | |||
) | |||
} | |||
val orClause = BSONDocument("$or" -> andClause) | |||
val pUp = Promise[Unit] | |||
val fUp = uDao.col.update(orClause, updateSet, upsert = true, multi = true) | |||
fUp.onComplete { | |||
case Success(res) => pUp.success() | |||
case Failure(t) => pUp.failure(t) | |||
} | |||
pUp.future | |||
For with yeild, good for multiple steps: | |||
/* | |||
// //2) way with for <- yield | |||
// val orClause = for( | |||
// un <- unverifiedTileSet; | |||
// andClause <- { | |||
// and( | |||
// Array( | |||
// BSONDocument("x" -> BSONInteger(un.x)), | |||
// BSONDocument("y" -> BSONInteger(un.y)) | |||
// ) | |||
// ) | |||
// } | |||
// )yield{ | |||
// BSONDocument("$or" -> andClause) | |||
// } | |||
//2) way with for <- yield | |||
val orClause2 = for( | |||
andClause <- { | |||
unverifiedTileSet.map{un => | |||
and( | |||
Array( | |||
BSONDocument("x" -> BSONInteger(un.x)), | |||
BSONDocument("y" -> BSONInteger(un.y)) | |||
) | |||
) | |||
} | |||
} | |||
)yield{ | |||
BSONDocument("$or" -> andClause) | |||
} | |||
Third way, mutable oldskool: | |||
// method 3, oldskool for with mutable, not recommended | |||
import scala.collection.mutable.ArrayBuffer | |||
var andClause = ArrayBuffer.empty[BSONDocument] | |||
for (un <- unverifiedTileSet) { | |||
andClause += and( | |||
Array( | |||
BSONDocument("x" -> BSONInteger(un.x)), | |||
BSONDocument("y" -> BSONInteger(un.y)) | |||
) | |||
) | |||
} | |||
val orClause = BSONDocument("$or" -> andClause) | |||
*/ | |||
Revision as of 14:25, 19 October 2016
Installation
echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823 sudo apt-get update sudo apt-get install sbt
Next, set up ~/.sbt/repositories with repos used by your team.
CAUSAM setup
For Causam, set up an AWS VPN to get on the stash network, then add these:
[repositories] local artifactory-releases: http://artifactory.energynet.link:8081/artifactory/libs-release/ artifactory-snapshots: http://artifactory.energynet.link:8081/artifactory/libs-snapshot/ ivy-releases: http://artifactory.energynet.link:8081/artifactory/ivy-releases, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext] anormcypher: http://artifactory.energynet.link:8081/artifactory/anormcypher
Then if you have a project already, use sbt and let that pull down all the dependencies:
cd ~/development/causam/git/causam-north-poller-scala sbt compile
CONTAINERS
Here are three ways to create a container from information in another.
Immutable map (best):
val andClause = unverifiedTileSet.map { un =>
and(
Array(
BSONDocument("x" -> BSONInteger(un.x)),
BSONDocument("y" -> BSONInteger(un.y))
)
)
}
val orClause = BSONDocument("$or" -> andClause)
val pUp = Promise[Unit]
val fUp = uDao.col.update(orClause, updateSet, upsert = true, multi = true)
fUp.onComplete {
case Success(res) => pUp.success()
case Failure(t) => pUp.failure(t)
}
pUp.future
For with yeild, good for multiple steps:
/*
// //2) way with for <- yield
// val orClause = for(
// un <- unverifiedTileSet;
// andClause <- {
// and(
// Array(
// BSONDocument("x" -> BSONInteger(un.x)),
// BSONDocument("y" -> BSONInteger(un.y))
// )
// )
// }
// )yield{
// BSONDocument("$or" -> andClause)
// }
//2) way with for <- yield
val orClause2 = for(
andClause <- {
unverifiedTileSet.map{un =>
and(
Array(
BSONDocument("x" -> BSONInteger(un.x)),
BSONDocument("y" -> BSONInteger(un.y))
)
)
}
}
)yield{
BSONDocument("$or" -> andClause)
}
Third way, mutable oldskool:
// method 3, oldskool for with mutable, not recommended
import scala.collection.mutable.ArrayBuffer
var andClause = ArrayBuffer.empty[BSONDocument]
for (un <- unverifiedTileSet) {
andClause += and(
Array(
BSONDocument("x" -> BSONInteger(un.x)),
BSONDocument("y" -> BSONInteger(un.y))
)
)
}
val orClause = BSONDocument("$or" -> andClause)
*/