diff --git a/docs/ambra-schema.sql b/docs/ambra-schema.sql new file mode 100644 index 0000000..2a946cf --- /dev/null +++ b/docs/ambra-schema.sql @@ -0,0 +1,420 @@ +-- MySQL dump 10.13 Distrib 5.6.16, for debian-linux-gnu (x86_64) +-- +-- Host: 127.0.0.1 Database: ambra +-- ------------------------------------------------------ +-- Server version 5.6.16-1~exp1 + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +-- +-- Table structure for table `article` +-- + +DROP TABLE IF EXISTS `article`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `article` ( + `articleId` bigint(20) NOT NULL AUTO_INCREMENT, + `doi` varchar(150) NOT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`articleId`), + UNIQUE KEY `doi` (`doi`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `articleCategoryAssignment` +-- + +DROP TABLE IF EXISTS `articleCategoryAssignment`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `articleCategoryAssignment` ( + `articleId` bigint(20) NOT NULL, + `categoryId` bigint(20) NOT NULL, + `weight` int(11) NOT NULL, + PRIMARY KEY (`articleId`,`categoryId`), + KEY `articleId` (`articleId`), + KEY `categoryId` (`categoryId`), + CONSTRAINT `fk_articleCategoryAssignment_1` FOREIGN KEY (`articleId`) REFERENCES `article` (`articleId`) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT `fk_articleCategoryAssignment_2` FOREIGN KEY (`categoryId`) REFERENCES `category` (`categoryID`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `articleCategoryAssignmentFlag` +-- + +DROP TABLE IF EXISTS `articleCategoryAssignmentFlag`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `articleCategoryAssignmentFlag` ( + `flagId` bigint(20) NOT NULL AUTO_INCREMENT, + `articleId` bigint(20) NOT NULL, + `categoryId` bigint(20) NOT NULL, + `userProfileId` bigint(20) DEFAULT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`flagId`), + KEY `articleId` (`articleId`), + KEY `categoryId` (`categoryId`), + KEY `fk_articleCategoryAssignmentFlag_1` (`articleId`,`categoryId`), + CONSTRAINT `fk_articleCategoryAssignmentFlag_1` FOREIGN KEY (`articleId`, `categoryId`) REFERENCES `articleCategoryAssignment` (`articleId`, `categoryId`) ON DELETE CASCADE ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `articleFile` +-- + +DROP TABLE IF EXISTS `articleFile`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `articleFile` ( + `fileId` bigint(20) NOT NULL AUTO_INCREMENT, + `ingestionId` bigint(20) NOT NULL, + `itemId` bigint(20) DEFAULT NULL, + `fileType` varchar(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, + `bucketName` varchar(255) NOT NULL, + `crepoKey` varchar(255) NOT NULL, + `crepoUuid` varchar(36) NOT NULL, + `fileSize` bigint(20) NOT NULL, + `ingestedFileName` varchar(255) NOT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`fileId`), + UNIQUE KEY `ingest_ingestedFileName` (`ingestionId`,`ingestedFileName`), + UNIQUE KEY `crepoUuid_UNIQUE` (`crepoUuid`), + UNIQUE KEY `ingest_item_filetype` (`ingestionId`,`itemId`,`fileType`), + KEY `fk_articleFile_2` (`itemId`), + CONSTRAINT `fk_articleFile_1` FOREIGN KEY (`ingestionId`) REFERENCES `articleIngestion` (`ingestionId`) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT `fk_articleFile_2` FOREIGN KEY (`itemId`) REFERENCES `articleItem` (`itemId`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `articleIngestion` +-- + +DROP TABLE IF EXISTS `articleIngestion`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `articleIngestion` ( + `ingestionId` bigint(20) NOT NULL AUTO_INCREMENT, + `articleId` bigint(20) NOT NULL, + `journalId` bigint(20) NOT NULL, + `ingestionNumber` int(11) NOT NULL, + `title` text NOT NULL, + `publicationDate` date NOT NULL, + `revisionDate` date DEFAULT NULL, + `publicationStage` varchar(100) DEFAULT NULL, + `articleType` varchar(100) DEFAULT NULL, + `strikingImageItemId` bigint(20) DEFAULT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `lastModified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`ingestionId`), + UNIQUE KEY `article_ingestnum` (`articleId`,`ingestionNumber`), + KEY `fk_articleIngestion_2` (`journalId`), + KEY `fk_articleIngestion_3` (`strikingImageItemId`), + CONSTRAINT `fk_articleIngestion_1` FOREIGN KEY (`articleId`) REFERENCES `article` (`articleId`) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT `fk_articleIngestion_2` FOREIGN KEY (`journalId`) REFERENCES `journal` (`journalId`) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT `fk_articleIngestion_3` FOREIGN KEY (`strikingImageItemId`) REFERENCES `articleItem` (`itemId`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `articleItem` +-- + +DROP TABLE IF EXISTS `articleItem`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `articleItem` ( + `itemId` bigint(20) NOT NULL AUTO_INCREMENT, + `ingestionId` bigint(20) NOT NULL, + `doi` varchar(150) NOT NULL, + `articleItemType` varchar(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`itemId`), + KEY `doi` (`doi`), + KEY `fk_articleItem_1` (`ingestionId`), + CONSTRAINT `fk_articleItem_1` FOREIGN KEY (`ingestionId`) REFERENCES `articleIngestion` (`ingestionId`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `articleList` +-- + +DROP TABLE IF EXISTS `articleList`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `articleList` ( + `articleListId` bigint(20) NOT NULL AUTO_INCREMENT, + `listKey` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, + `displayName` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, + `journalId` bigint(20) NOT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `lastModified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `listType` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`articleListId`), + UNIQUE KEY `listIdentity` (`journalId`,`listType`,`listKey`), + KEY `journalId` (`journalId`), + CONSTRAINT `fk_articleList_1` FOREIGN KEY (`journalId`) REFERENCES `journal` (`journalId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `articleListJoinTable` +-- + +DROP TABLE IF EXISTS `articleListJoinTable`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `articleListJoinTable` ( + `articleListId` bigint(20) NOT NULL, + `sortOrder` int(11) NOT NULL, + `articleId` bigint(20) NOT NULL, + PRIMARY KEY (`articleListId`,`sortOrder`), + KEY `articleId` (`articleId`), + CONSTRAINT `fk_articleListJoinTable_1` FOREIGN KEY (`articleListId`) REFERENCES `articleList` (`articleListId`), + CONSTRAINT `fk_articleListJoinTable_2` FOREIGN KEY (`articleId`) REFERENCES `article` (`articleId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `articleRelationship` +-- + +DROP TABLE IF EXISTS `articleRelationship`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `articleRelationship` ( + `articleRelationshipId` bigint(20) NOT NULL AUTO_INCREMENT, + `sourceArticleId` bigint(20) NOT NULL, + `targetArticleId` bigint(20) NOT NULL, + `type` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `lastModified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`articleRelationshipId`), + KEY `sourceArticleId` (`sourceArticleId`), + KEY `targetArticleId` (`targetArticleId`), + CONSTRAINT `fk_articleRelationship_1` FOREIGN KEY (`sourceArticleId`) REFERENCES `article` (`articleId`), + CONSTRAINT `fk_articleRelationship_2` FOREIGN KEY (`targetArticleId`) REFERENCES `article` (`articleId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `articleRevision` +-- + +DROP TABLE IF EXISTS `articleRevision`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `articleRevision` ( + `revisionId` bigint(20) NOT NULL AUTO_INCREMENT, + `ingestionId` bigint(20) NOT NULL, + `revisionNumber` int(11) NOT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`revisionId`), + KEY `fk_articleRevision_1` (`ingestionId`), + CONSTRAINT `fk_articleRevision_1` FOREIGN KEY (`ingestionId`) REFERENCES `articleIngestion` (`ingestionId`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `comment` +-- + +DROP TABLE IF EXISTS `comment`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `comment` ( + `commentId` bigint(20) NOT NULL AUTO_INCREMENT, + `commentURI` varchar(250) CHARACTER SET utf8 NOT NULL, + `articleId` bigint(20) NOT NULL, + `parentId` bigint(20) DEFAULT NULL, + `userProfileId` bigint(20) NOT NULL, + `title` mediumtext COLLATE utf8_unicode_ci, + `body` mediumtext COLLATE utf8_unicode_ci, + `competingInterestBody` mediumtext COLLATE utf8_unicode_ci, + `highlightedText` mediumtext COLLATE utf8_unicode_ci, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `lastModified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `isRemoved` bit(1) DEFAULT b'0', + PRIMARY KEY (`commentId`), + UNIQUE KEY `commentURI` (`commentURI`), + KEY `fk_comment_1` (`articleId`), + KEY `fk_comment_2` (`parentId`), + KEY `userProfileID` (`userProfileId`), + CONSTRAINT `fk_comment_1` FOREIGN KEY (`articleId`) REFERENCES `article` (`articleId`), + CONSTRAINT `fk_comment_2` FOREIGN KEY (`parentId`) REFERENCES `comment` (`commentId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `commentFlag` +-- + +DROP TABLE IF EXISTS `commentFlag`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `commentFlag` ( + `commentFlagId` bigint(20) NOT NULL AUTO_INCREMENT, + `commentId` bigint(20) NOT NULL, + `userProfileId` bigint(20) NOT NULL, + `reason` varchar(25) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `comment` text CHARACTER SET utf8 COLLATE utf8_bin, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `lastModified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`commentFlagId`), + KEY `commentId` (`commentId`), + KEY `userProfileId` (`userProfileId`), + CONSTRAINT `fk_commentFlag_1` FOREIGN KEY (`commentId`) REFERENCES `comment` (`commentId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `issue` +-- + +DROP TABLE IF EXISTS `issue`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `issue` ( + `issueId` bigint(20) NOT NULL AUTO_INCREMENT, + `doi` varchar(150) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `volumeId` bigint(20) NOT NULL, + `volumeSortOrder` int(11) NOT NULL, + `displayName` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `imageArticleId` bigint(20) DEFAULT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `lastModified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`issueId`), + UNIQUE KEY `doi` (`doi`), + KEY `volumeId` (`volumeId`), + KEY `fk_issue_2` (`imageArticleId`), + CONSTRAINT `fk_issue_1` FOREIGN KEY (`volumeId`) REFERENCES `volume` (`volumeId`), + CONSTRAINT `fk_issue_2` FOREIGN KEY (`imageArticleId`) REFERENCES `article` (`articleId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `issueArticleList` +-- + +DROP TABLE IF EXISTS `issueArticleList`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `issueArticleList` ( + `issueId` bigint(20) NOT NULL, + `sortOrder` int(11) NOT NULL, + `articleId` bigint(20) NOT NULL, + PRIMARY KEY (`issueId`,`articleId`), + KEY `fk_issueArticleList_2` (`articleId`), + CONSTRAINT `fk_issueArticleList_1` FOREIGN KEY (`issueId`) REFERENCES `issue` (`issueId`), + CONSTRAINT `fk_issueArticleList_2` FOREIGN KEY (`articleId`) REFERENCES `article` (`articleId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `journal` +-- + +DROP TABLE IF EXISTS `journal`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `journal` ( + `journalId` bigint(20) NOT NULL AUTO_INCREMENT, + `currentIssueId` bigint(20) DEFAULT NULL, + `journalKey` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `eIssn` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, + `title` varchar(500) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `lastModified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`journalId`), + KEY `journal_ibfk_1_idx` (`currentIssueId`), + CONSTRAINT `fk_journal_1` FOREIGN KEY (`currentIssueId`) REFERENCES `issue` (`issueId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `syndication` +-- + +DROP TABLE IF EXISTS `syndication`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `syndication` ( + `syndicationId` bigint(20) NOT NULL AUTO_INCREMENT, + `revisionId` bigint(20) NOT NULL, + `targetQueue` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `status` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `submissionCount` int(11) DEFAULT NULL, + `errorMessage` longtext CHARACTER SET utf8 COLLATE utf8_bin, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `lastSubmitTimestamp` timestamp NULL DEFAULT NULL, + `lastModified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`syndicationId`), + UNIQUE KEY `revisionId` (`revisionId`,`targetQueue`), + CONSTRAINT `fk_syndication_1` FOREIGN KEY (`revisionId`) REFERENCES `articleRevision` (`revisionId`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `version` +-- + +DROP TABLE IF EXISTS `version`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `version` ( + `versionID` bigint(20) NOT NULL AUTO_INCREMENT, + `name` varchar(25) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `version` int(11) NOT NULL, + `updateInProcess` bit(1) NOT NULL, + `created` datetime NOT NULL, + `lastModified` datetime DEFAULT NULL, + PRIMARY KEY (`versionID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `volume` +-- + +DROP TABLE IF EXISTS `volume`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `volume` ( + `volumeId` bigint(20) NOT NULL AUTO_INCREMENT, + `doi` varchar(150) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `journalId` bigint(20) NOT NULL, + `journalSortOrder` int(11) NOT NULL, + `displayName` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `lastModified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`volumeId`), + UNIQUE KEY `doi` (`doi`), + KEY `journalID` (`journalId`), + CONSTRAINT `fk_volume_1` FOREIGN KEY (`journalId`) REFERENCES `journal` (`journalId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2017-01-25 11:16:02 diff --git a/docs/context.xml b/docs/context.xml new file mode 100644 index 0000000..0f67dde --- /dev/null +++ b/docs/context.xml @@ -0,0 +1,65 @@ + + + + + + + WEB-INF/web.xml + + + + + + + + + + + + + + + + + diff --git a/docs/journal.yaml b/docs/journal.yaml new file mode 100644 index 0000000..c237c18 --- /dev/null +++ b/docs/journal.yaml @@ -0,0 +1,10 @@ +journalKey: null +# Specify the journal key for this site. The journal key is a value associated with articles (in the service API) that +# describes which journals the article was published or cross-published in. This controls, among other things, which +# articles may be viewed on this site. +# +# This configuration value is mandatory and must be overridden with a non-null string in order for the site to work. + +journalName: null +# The full, human-readable name of the journal. +# This configuration value is mandatory and must be overridden with a non-null string in order for the site to work. \ No newline at end of file diff --git a/docs/rhino.yaml b/docs/rhino.yaml new file mode 100644 index 0000000..e2b5fd8 --- /dev/null +++ b/docs/rhino.yaml @@ -0,0 +1,23 @@ +################################ System Config ################################ + +prettyPrintJson: true +# enable to use Gson pretty print JSON output + +contentRepo: + corpus: + # Main corpus of articles. + address: http://localhost:8081 + bucket: corpus + # bucket name for the corpus. A bucket with an identical name must be created in the Content Repo. + # See the Ingestible-Package-Guide, "Ingesting the article into Rhino". + +httpConnectionPool: + maxTotal: 100 + defaultMaxPerRoute: 100 +# HTTP connection management from Rhino (as a client) to other services such as content repo. + +# The parameters below would be required to enable comments on articles. +# userApi: +# server: +# authorizationAppName: +# authorizationPassword: diff --git a/docs/wombat.yaml b/docs/wombat.yaml new file mode 100644 index 0000000..20f43f7 --- /dev/null +++ b/docs/wombat.yaml @@ -0,0 +1,47 @@ +################################ System Config ################################ + +server: http://localhost:8123/ +# URL of the server for the service API ("Rhino") + +compiledAssetDir: null +# The local directory to which to write minified JavaScript and CSS assets. +# +# If null, JavaScript and CSS code will not be minified. +# This makes the code human-readable in the browser, a.k.a "dev mode". + +httpConnectionPool: + maxTotal: 100 + defaultMaxPerRoute: 100 +# Values for HTTP connection management. Setting these too low can cause serious performance +# degradation. For details, see org.apache.http.impl.conn.PoolingHttpClientConnectionManager, +# http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html + +# Parameters for Memcached +cache: + memcachedHost: null + memcachedPort: null + cacheAppPrefix: null +# Set all to null to disable Memcached. Otherwise, all three are required. + +# The parameters below would be required to enable comments on articles. +# cas: +# casUrl: +# loginUrl: +# logoutUrl: + + +################################### Themes #################################### + +themes: + + - key: # Place the key for your journal here (see journal.yaml) + path: # Place the location you chose for your theme directory here (see "Setting up a theme directory") + parent: .Desktop + + + # ======================================== + +sites: + + - key: Desktop + theme: Desktop # Must match a themes key, defined above \ No newline at end of file diff --git a/header_bkg.jpg b/header_bkg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a3cf87236dcb4b66fa908c25a235b6ed133500cc GIT binary patch literal 28928 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 Lq$~vd9sB