7 namespace Fossology\ReportImport;
 
   18 require_once 
'ReportImportConfiguration.php';
 
   30   private $copyrightDao;
 
   35   protected $agent_pk = -1;
 
   37   protected $groupId = -1;
 
   39   protected $userId = -1;
 
   41   protected $jobId = -1;
 
   43   protected $nserIsAdmin = 
false;
 
   46   protected $configuration;
 
   61   function __construct($agent_pk, $userDao, $licenseDao, $clearingDao, $copyrightDao, $dbManager, $groupId, $userId, $jobId, $configuration)
 
   63     $this->userDao = $userDao;
 
   64     $this->clearingDao = $clearingDao;
 
   65     $this->licenseDao = $licenseDao;
 
   66     $this->copyrightDao = $copyrightDao;
 
   69     $this->groupId = $groupId;
 
   70     $this->userId = $userId;
 
   71     $this->
jobId = $jobId;
 
   73     $this->configuration = $configuration;
 
   75     $userRow = $userDao->getUserByPk($userId);
 
   84     $pfiles = $data->getPfiles();
 
   85     if(
sizeof($pfiles) === 0)
 
   90     if($this->configuration->isCreateLicensesInfosAsFindings() ||
 
   91        $this->configuration->isCreateConcludedLicensesAsFindings() ||
 
   92        $this->configuration->isCreateConcludedLicensesAsConclusions())
 
   94       $licenseInfosInFile = $data->getLicenseInfosInFile();
 
   95       $licensesConcluded = $data->getLicensesConcluded();
 
   97       $licensePKsInFile = array();
 
   98       foreach($licenseInfosInFile as $dataItem)
 
  100         if (strcasecmp($dataItem->getLicenseId(), 
"noassertion") == 0)
 
  105         $licensePKsInFile[] = $licenseId;
 
  108       $licensePKsConcluded = array();
 
  109       foreach ($licensesConcluded as $dataItem)
 
  111         if (strcasecmp($dataItem->getLicenseId(), 
"noassertion") == 0)
 
  116         $licensePKsConcluded[$licenseId] = $dataItem->getCustomText();
 
  122     if($this->configuration->isAddCopyrightInformation())
 
  124       $this->insertFoundCopyrightTextsToDB($data->getCopyrightTexts(),
 
  137     $licenseShortName = $dataItem->getLicenseId();
 
  138     if ($this->configuration->shouldMatchLicenseNameWithSPDX()) {
 
  139       $license = $this->licenseDao->getLicenseBySpdxId($licenseShortName, $groupId);
 
  140       if ($license === 
null) {
 
  141         echo 
"WARNING: Could not find license with spdx id '$licenseShortName' ... trying ShortName\n";
 
  142         $license = $this->licenseDao->getLicenseByShortName($licenseShortName, $groupId);
 
  145       $license = $this->licenseDao->getLicenseByShortName($licenseShortName, $groupId);
 
  147     if ($license !== 
null)
 
  149       return $license->getId();
 
  151     elseif (! $this->licenseDao->isNewLicense($licenseShortName, $groupId))
 
  153       throw new \Exception(
'shortname already in use');
 
  155     elseif ($dataItem->isSetLicenseCandidate())
 
  157       echo 
"INFO: No license with shortname=\"$licenseShortName\" found ... ";
 
  159       $licenseCandidate = $dataItem->getLicenseCandidate();
 
  160       if($this->configuration->isCreateLicensesAsCandidate() || !$this->userIsAdmin)
 
  162         echo 
"Creating it as license candidate ...\n";
 
  163         $licenseId = $this->licenseDao->insertUploadLicense($licenseShortName,
 
  164           $licenseCandidate->getText(), $groupId, $this->userId);
 
  165         $this->licenseDao->updateCandidate(
 
  167           $licenseCandidate->getShortName(),
 
  168           $licenseCandidate->getFullName(),
 
  169           $licenseCandidate->getText(),
 
  170           $licenseCandidate->getUrl(),
 
  171           "Created for ReportImport with jobId=[".$this->jobId.
"]",
 
  176           $licenseCandidate->getShortName()
 
  182         echo 
"creating it as license ...\n";
 
  183         $licenseText = 
trim($licenseCandidate->getText());
 
  184         return $this->licenseDao->insertLicense($licenseCandidate->getShortName(), $licenseText, $licenseCandidate->getShortName());
 
  197     if($this->configuration->isCreateLicensesInfosAsFindings())
 
  202     if($this->configuration->isCreateConcludedLicensesAsFindings())
 
  207     if($this->configuration->isCreateConcludedLicensesAsConclusions())
 
  209       $removeLicenseIds = array();
 
  210       foreach ($licensePKsInFile as $licenseId)
 
  212         if(! array_key_exists($licenseId,$licensePKsConcluded))
 
  214           $removeLicenseIds[] = $licenseId;
 
  228     if(
sizeof($addLicenseIds) == 0)
 
  233     foreach ($pfiles as $pfile)
 
  236       foreach ($addLicenseIds as $licenseId => $licenseText)
 
  239         $eventIds[] = $this->clearingDao->insertClearingEvent(
 
  240           $pfile[
'uploadtree_pk'],
 
  245           ClearingEventTypes::IMPORT,
 
  251       foreach ($removeLicenseIds as $licenseId)
 
  254         $eventIds[] = $this->clearingDao->insertClearingEvent(
 
  255           $pfile[
'uploadtree_pk'],
 
  260           ClearingEventTypes::IMPORT,
 
  266       $this->clearingDao->createDecisionFromEvents(
 
  267         $pfile[
'uploadtree_pk'],
 
  270         $this->configuration->getConcludeLicenseDecisionType(),
 
  271         DecisionScopes::ITEM,
 
  282     foreach ($pfiles as $pfile)
 
  284       foreach($licenseIds as $licenseId)
 
  287           "INSERT INTO license_file (rf_fk, agent_fk, pfile_fk) VALUES ($1,$2,$3) RETURNING fl_pk",
 
  288           array($licenseId, $this->
agent_pk, $pfile[
'pfile_pk']),
 
  289           __METHOD__.
"forReportImport");
 
  294   public function insertFoundCopyrightTextsToDB($copyrightTexts, $entries)
 
  296     foreach ($copyrightTexts as $copyrightText)
 
  298       $this->insertFoundCopyrightTextToDB($copyrightText, $entries);
 
  302   public function insertFoundCopyrightTextToDB($copyrightText, $entries)
 
  304     $copyrightLines = array_map(
"trim", explode(
"\n",$copyrightText));
 
  305     foreach ($copyrightLines as $copyrightLine)
 
  307       if(empty($copyrightLine))
 
  312       foreach ($entries as $entry)
 
  314         $this->saveAsCopyrightFindingToDB(
trim($copyrightLine), $entry[
'pfile_pk']);
 
  319   private function saveAsCopyrightFindingToDB($content, $pfile_fk)
 
  321     $curDecisions = $this->copyrightDao->getDecisions(
"copyright_decision", $pfile_fk);
 
  322     foreach ($curDecisions as $decision)
 
  324       if($decision[
'textfinding'] == $content){
 
  329     $this->copyrightDao->saveDecision(
"copyright_decision", $pfile_fk, $this->userId , DecisionTypes::IDENTIFIED,
 
  330       "", $content, 
"imported via reportImport");
 
saveAsDecisionToDB($addLicenseIds, $removeLicenseIds, $pfiles)
 
insertLicenseInformationToDB($licensePKsInFile, $licensePKsConcluded, $pfiles)
 
getIdForDataItemOrCreateLicense($dataItem, $groupId)
 
__construct($agent_pk, $userDao, $licenseDao, $clearingDao, $copyrightDao, $dbManager, $groupId, $userId, $jobId, $configuration)
 
saveAsLicenseFindingToDB($licenseIds, $pfiles)
 
char * trim(char *ptext)
Trimming whitespace.
 
#define PLUGIN_DB_ADMIN
Plugin requires admin level permission on DB.
 
int jobId
The id of the job.
 
fo_dbManager * dbManager
fo_dbManager object