All Downloads are FREE. Search and download functionalities are using the official Maven repository.

controllers.AdminController.scala Maven / Gradle / Ivy

The newest version!
package controllers

import java.io.File
import javax.inject.Inject

import com.mohiva.play.silhouette.api.Environment
import com.mohiva.play.silhouette.impl.authenticators.CookieAuthenticator
import models.{Database, AdminAuthorization, User}
import org.opencompare.api.java.impl.io.KMFJSONLoader
import play.api.i18n.MessagesApi

/**
 * Created by gbecan on 10/1/15.
 */
class AdminController @Inject() (val messagesApi: MessagesApi, val env: Environment[User, CookieAuthenticator]) extends BaseController {

  def load(pcmType : String) = SecuredAction(AdminAuthorization()) {

    val path = "/var/www/opencompare/loading"
    val dir = new File(path)

    val loader = new KMFJSONLoader()

    var nbOfLoadedPCMs = 0

    if (dir.exists())  {
      for (file <- dir.listFiles.filter(_.getName.endsWith(".pcm"))) {
        // Load PCM
        val pcmContainers = loader.load(file)
        val pcmContainer = pcmContainers.get(0)
        val pcm = pcmContainer.getPcm()
        val metadata = pcmContainer.getMetadata()

        // Set source and license
        pcmType match {
          case "wikipedia" =>
            val hyphenIndex = pcm.getName.indexOf("-")
            val pageName = if (hyphenIndex >= 0) {
              pcm.getName.substring(0, hyphenIndex - 1)
            } else {
              pcm.getName
            }

            val source = "https://en.wikipedia.org/wiki/" + pageName
            metadata.setSource(source)
            metadata.setLicense("Creative Commons Attribution-ShareAlike 3.0 Unported")

            pcm.setName(pcm.getName().replaceAll("_", " ")) // Remove underscores in name
          case _ =>
        }


        // Add to database if valid
        if (pcm.isValid()) {
          Database.create(pcmContainer)
          nbOfLoadedPCMs += 1
        }
      }
    }

    Ok(nbOfLoadedPCMs + " pcms successfully loaded.")
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy