/** * @covers NlmCitationSchemaOpenUrlCrosswalkFilter * @covers OpenUrlCrosswalkFilter */ public function testExecute() { $nlmDescription = $this->getTestNlmDescription(); $openUrlDescription = $this->getTestOpenUrlDescription(); $filter = new NlmCitationSchemaOpenUrlCrosswalkFilter(); self::assertEquals($openUrlDescription, $filter->execute($nlmDescription)); }
/** * Prepare a search with the CrossRef OpenURL resolver * @param $citationDescription MetadataDescription * @return array an array of search parameters */ function &_prepareOpenUrlSearch(&$citationDescription) { $nullVar = null; // Crosswalk to OpenURL import('lib.pkp.classes.metadata.nlm.NlmCitationSchemaOpenUrlCrosswalkFilter'); $nlmOpenUrlFilter = new NlmCitationSchemaOpenUrlCrosswalkFilter(); if (is_null($openUrlCitation =& $nlmOpenUrlFilter->execute($citationDescription))) { return $nullVar; } // Prepare the search $searchParams = array('url_ver' => 'Z39.88-2004'); // Configure the meta-data schema $openUrlCitationSchema =& $openUrlCitation->getMetadataSchema(); switch (true) { case is_a($openUrlCitationSchema, 'OpenUrlJournalSchema'): $searchParams['rft_val_fmt'] = 'info:ofi/fmt:kev:mtx:journal'; break; case is_a($openUrlCitationSchema, 'OpenUrlBookSchema'): $searchParams['rft_val_fmt'] = 'info:ofi/fmt:kev:mtx:book'; break; case is_a($openUrlCitationSchema, 'OpenUrlDissertationSchema'): $searchParams['rft_val_fmt'] = 'info:ofi/fmt:kev:mtx:dissertation'; break; default: assert(false); } // Add all OpenURL meta-data to the search parameters // FIXME: Implement a looping search like for other lookup services. $searchProperties = array('aufirst', 'aulast', 'btitle', 'jtitle', 'atitle', 'issn', 'artnum', 'date', 'volume', 'issue', 'spage', 'epage'); foreach ($searchProperties as $property) { if ($openUrlCitation->hasStatement($property)) { $searchParams['rft.' . $property] = $openUrlCitation->getStatement($property); } } return $searchParams; }