Skip to content

Commit 75f03c4

Browse files
author
Ruslan Baidan
authored
Merge pull request #66 from monarc-project/feature/import-cache-helper
Feature Import Cache Helper
2 parents 193e2e3 + c474312 commit 75f03c4

18 files changed

+796
-815
lines changed

config/module.config.php

+3
Original file line numberDiff line numberDiff line change
@@ -1416,6 +1416,9 @@
14161416
);
14171417
},
14181418

1419+
// Helpers
1420+
Service\Helper\ImportCacheHelper::class => AutowireFactory::class,
1421+
14191422
// Providers
14201423
StatsApiProvider::class => ReflectionBasedAbstractFactory::class,
14211424

src/Helper/EncryptDecryptHelperTrait.php

+5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
<?php declare(strict_types=1);
2+
/**
3+
* @link https://github.com/monarc-project for the canonical source repository
4+
* @copyright Copyright (c) 2016-2022 SMILE GIE Securitymadein.lu - Licensed under GNU Affero GPL v3
5+
* @license MONARC is licensed under GNU Affero General Public License version 3
6+
*/
27

38
namespace Monarc\FrontOffice\Helper;
49

src/Model/Table/AmvTable.php

+34-2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Monarc\Core\Service\ConnectedUserService;
1616
use Monarc\FrontOffice\Model\Entity\Amv;
1717
use Monarc\FrontOffice\Model\Entity\Anr;
18+
use Monarc\FrontOffice\Model\Entity\Asset;
1819

1920
/**
2021
* Class AmvTable
@@ -31,15 +32,43 @@ public function __construct(DbCli $dbService, ConnectedUserService $connectedUse
3132
parent::__construct($dbService, Amv::class, $connectedUserService);
3233
}
3334

35+
public function findByAnrAndUuid(Anr $anr, string $uuid): ?Amv
36+
{
37+
return $this->getRepository()->createQueryBuilder('amv')
38+
->where('amv.anr = :anr')
39+
->andWhere('amv.uuid = :uuid')
40+
->setParameter('anr', $anr)
41+
->setParameter('uuid', $uuid)
42+
->getQuery()
43+
->getOneOrNullResult();
44+
}
45+
46+
/**
47+
* @return Amv[]
48+
*/
49+
public function findByAnr(Anr $anr): array
50+
{
51+
return $this->getRepository()
52+
->createQueryBuilder('amv')
53+
->where('amv.anr = :anr')
54+
->setParameter('anr', $anr)
55+
->getQuery()
56+
->getResult();
57+
}
58+
3459
/**
3560
* @return Amv[]
3661
*/
37-
public function findByAnrIndexedByUuid(Anr $anr): array
62+
public function findByAnrAndAsset(Anr $anr, Asset $asset): array
3863
{
3964
return $this->getRepository()
40-
->createQueryBuilder('amv', 'amv.uuid')
65+
->createQueryBuilder('amv')
66+
->innerJoin('amv.asset', 'a')
4167
->where('amv.anr = :anr')
68+
->andWhere('a.uuid = :assetUuid')
69+
->andWhere('a.anr = :anr')
4270
->setParameter('anr', $anr)
71+
->setParameter('assetUuid', $asset->getUuid())
4372
->getQuery()
4473
->getResult();
4574
}
@@ -87,6 +116,9 @@ public function saveEntity(AmvSuperClass $amv, bool $flushAll = true): void
87116
}
88117
}
89118

119+
/**
120+
* Called from Core/AmvService.
121+
*/
90122
public function findByAmvItemsUuidAndAnrId(
91123
string $assetUuid,
92124
string $threatUuid,

src/Model/Table/AssetTable.php

+16-5
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@ public function __construct(DbCli $dbService, ConnectedUserService $connectedUse
2626

2727
public function findByAnrAndUuid(Anr $anr, string $uuid): ?Asset
2828
{
29-
return $this->getRepository()
30-
->createQueryBuilder('a')
29+
return $this->getRepository()->createQueryBuilder('a')
3130
->where('a.anr = :anr')
3231
->andWhere('a.uuid = :uuid')
3332
->setParameter('anr', $anr)
@@ -37,16 +36,28 @@ public function findByAnrAndUuid(Anr $anr, string $uuid): ?Asset
3736
->getOneOrNullResult();
3837
}
3938

40-
public function findByAnrAndCode(Anr $anr, string $code): ?Asset
39+
public function existsWithAnrAndCode(Anr $anr, string $code): bool
4140
{
4241
return $this->getRepository()->createQueryBuilder('a')
4342
->where('a.anr = :anr')
44-
->andWhere('a.code = :code')
43+
->andWhere('a.uuid = :code')
4544
->setParameter('anr', $anr)
4645
->setParameter('code', $code)
4746
->setMaxResults(1)
4847
->getQuery()
49-
->getOneOrNullResult();
48+
->getOneOrNullResult() !== null;
49+
}
50+
51+
/**
52+
* @return Asset[]
53+
*/
54+
public function findByAnr(Anr $anr): array
55+
{
56+
return $this->getRepository()->createQueryBuilder('a')
57+
->where('a.anr = :anr')
58+
->setParameter('anr', $anr)
59+
->getQuery()
60+
->getResult();
5061
}
5162

5263
public function saveEntity(Asset $asset, bool $flushAll = true): void

src/Model/Table/InstanceTable.php

+19
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
use Monarc\Core\Model\Table\InstanceTable as CoreInstanceTable;
1515
use Monarc\FrontOffice\Model\DbCli;
1616
use Monarc\Core\Service\ConnectedUserService;
17+
use Monarc\FrontOffice\Model\Entity\Anr;
18+
use Monarc\FrontOffice\Model\Entity\Asset;
1719
use Monarc\FrontOffice\Model\Entity\Instance;
1820

1921
/**
@@ -47,6 +49,23 @@ public function findByAnrAndObject(AnrSuperClass $anr, ObjectSuperClass $object)
4749
->getResult();
4850
}
4951

52+
/**
53+
* @return Instance[]
54+
*/
55+
public function findByAnrAndAsset(Anr $anr, Asset $asset): array
56+
{
57+
return $this->getRepository()
58+
->createQueryBuilder('i')
59+
->innerJoin('i.asset', 'a')
60+
->where('i.anr = :anr')
61+
->andWhere('a.uuid = :assetUuid')
62+
->andWhere('a.anr = :anr')
63+
->setParameter('anr', $anr)
64+
->setParameter('assetUuid', $asset->getUuid())
65+
->getQuery()
66+
->getResult();
67+
}
68+
5069
/**
5170
* @return Instance[]
5271
*/

src/Model/Table/MeasureTable.php

+3-4
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
namespace Monarc\FrontOffice\Model\Table;
99

1010
use Monarc\Core\Model\Entity\AnrSuperClass;
11-
use Monarc\Core\Model\Entity\MeasureSuperClass;
1211
use Monarc\Core\Model\Table\MeasureTable as CoreMeasureTable;
1312
use Monarc\FrontOffice\Model\DbCli;
1413
use Monarc\Core\Service\ConnectedUserService;
@@ -31,17 +30,17 @@ public function __construct(DbCli $dbService, ConnectedUserService $connectedUse
3130
/**
3231
* @return Measure[]
3332
*/
34-
public function findByAnrIndexedByUuid(Anr $anr): array
33+
public function findByAnr(Anr $anr): array
3534
{
3635
return $this->getRepository()
37-
->createQueryBuilder('m', 'm.uuid')
36+
->createQueryBuilder('m')
3837
->where('m.anr = :anr')
3938
->setParameter('anr', $anr)
4039
->getQuery()
4140
->getResult();
4241
}
4342

44-
public function findByAnrAndUuid(AnrSuperClass $anr, string $uuid): ?MeasureSuperClass
43+
public function findByAnrAndUuid(AnrSuperClass $anr, string $uuid): ?Measure
4544
{
4645
return $this->getRepository()
4746
->createQueryBuilder('m')

src/Model/Table/MonarcObjectTable.php

+1-19
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
use Monarc\Core\Model\Table\MonarcObjectTable as CoreMonarcObjectTable;
1717
use Monarc\FrontOffice\Model\DbCli;
1818
use Monarc\Core\Service\ConnectedUserService;
19-
use Monarc\FrontOffice\Model\Entity\Asset;
19+
use Monarc\FrontOffice\Model\Entity\Anr;
2020
use Monarc\FrontOffice\Model\Entity\MonarcObject;
2121

2222
/**
@@ -54,24 +54,6 @@ public function findByAnrAndUuid(AnrSuperClass $anr, string $uuid): MonarcObject
5454
return $monarcObject;
5555
}
5656

57-
/**
58-
* @return MonarcObject[]
59-
*/
60-
public function findByAnrAndAsset(AnrSuperClass $anr, Asset $asset): array
61-
{
62-
return $this->getRepository()
63-
->createQueryBuilder('mo')
64-
->innerJoin('mo.asset', 'a')
65-
->where('mo.anr = :anr')
66-
->andWhere('a.uuid = :assetUuid')
67-
->andWhere('a.anr = :assetAnr')
68-
->setParameter('anr', $anr)
69-
->setParameter('assetUuid', $asset->getUuid())
70-
->setParameter('assetAnr', $anr)
71-
->getQuery()
72-
->getResult();
73-
}
74-
7557
public function findOneByAnrAssetNameScopeAndCategory(
7658
AnrSuperClass $anr,
7759
string $nameKey,

src/Model/Table/RolfRiskTable.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ public function findByAnrAndCode(Anr $anr, string $code): ?RolfRisk
3131
return $this->getRepository()
3232
->createQueryBuilder('rr')
3333
->where('rr.anr = :anr')
34-
->setParameter('anr', $anr)
3534
->andWhere('rr.code = :code')
35+
->setParameter('anr', $anr)
3636
->setParameter('code', $code)
3737
->setMaxResults(1)
3838
->getQuery()

src/Model/Table/SoaCategoryTable.php

+16
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
use Monarc\Core\Model\Table\AbstractEntityTable;
1212
use Monarc\Core\Service\ConnectedUserService;
1313
use Monarc\FrontOffice\Model\DbCli;
14+
use Monarc\FrontOffice\Model\Entity\Anr;
15+
use Monarc\FrontOffice\Model\Entity\Referential;
1416
use Monarc\FrontOffice\Model\Entity\SoaCategory;
1517

1618
/**
@@ -24,6 +26,20 @@ public function __construct(DbCli $dbService, ConnectedUserService $connectedUse
2426
parent::__construct($dbService, SoaCategory::class, $connectedUserService);
2527
}
2628

29+
/**
30+
* @return SoaCategory[]
31+
*/
32+
public function findByAnr(Anr $anr): array
33+
{
34+
return $this->getRepository()->createQueryBuilder('sc')
35+
->select('sc', 'ref')
36+
->innerJoin('sc.referential', 'ref')
37+
->where('sc.anr = :anr')
38+
->setParameter('anr', $anr)
39+
->getQuery()
40+
->getResult();
41+
}
42+
2743
public function saveEntity(SoaCategorySuperClass $soaCategory, bool $flushAll = true): void
2844
{
2945
$em = $this->getDb()->getEntityManager();

src/Model/Table/SoaTable.php

+6-5
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,16 @@ public function findByAnrAndSoaCategory(Anr $anr, SoaCategory $soaCategory, arra
7373
}
7474

7575

76-
public function findByMeasure(Measure $measure): ?Soa
76+
public function findByAnrAndMeasureUuid(Anr $anr, string $measureUuid): ?Soa
7777
{
7878
return $this->getRepository()
7979
->createQueryBuilder('s')
8080
->innerJoin('s.measure', 'm')
81-
->where('m.uuid = :measure_uuid')
82-
->andWhere('m.anr = :measure_anr')
83-
->setParameter('measure_uuid', $measure->getUuid())
84-
->setParameter('measure_anr', $measure->getAnr())
81+
->where('s.anr = :anr')
82+
->andWhere('m.uuid = :measure_uuid')
83+
->andWhere('m.anr = :anr')
84+
->setParameter('anr', $anr)
85+
->setParameter('measure_uuid', $measureUuid)
8586
->setMaxResults(1)
8687
->getQuery()
8788
->getOneOrNullResult();

src/Model/Table/ThemeTable.php

+5
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ public function getEntityClass(): string
2929
return Theme::class;
3030
}
3131

32+
public function findById(int $id): ?Theme
33+
{
34+
return $this->getRepository()->find($id);
35+
}
36+
3237
/**
3338
* @return Theme[]
3439
*/

src/Model/Table/ThreatTable.php

+14-39
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
namespace Monarc\FrontOffice\Model\Table;
99

10-
use Doctrine\ORM\EntityNotFoundException;
1110
use Monarc\Core\Model\Entity\ThreatSuperClass;
1211
use Monarc\Core\Model\Table\AbstractEntityTable;
1312
use Monarc\Core\Service\ConnectedUserService;
@@ -36,11 +35,13 @@ public function started($anrId)
3635
$res = $qb->select('COUNT(t.uuid)')
3736
->where('t.anr = :anrid')
3837
->setParameter(':anrid', $anrId)
39-
->andWhere('t.qualification != -1')->getQuery()->getSingleScalarResult();
38+
->andWhere('t.qualification != -1')
39+
->getQuery()
40+
->getSingleScalarResult();
41+
4042
return $res > 0;
4143
}
4244

43-
4445
/**
4546
* @return Threat[]
4647
*/
@@ -54,22 +55,9 @@ public function findByAnr(Anr $anr)
5455
->getResult();
5556
}
5657

57-
public function findUuidsAndCodesByAnr(Anr $anr): array
58+
public function findByAnrAndUuid(Anr $anr, string $uuid): ?Threat
5859
{
59-
return $this->getRepository()->createQueryBuilder('t')
60-
->select('t.uuid, t.code')
61-
->where('t.anr = :anr')
62-
->setParameter('anr', $anr)
63-
->getQuery()
64-
->getScalarResult();
65-
}
66-
67-
/**
68-
* @throws EntityNotFoundException
69-
*/
70-
public function findByAnrAndUuid(Anr $anr, string $uuid): ThreatSuperClass
71-
{
72-
$threat = $this->getRepository()
60+
return $this->getRepository()
7361
->createQueryBuilder('t')
7462
->where('t.anr = :anr')
7563
->andWhere('t.uuid = :uuid')
@@ -78,31 +66,18 @@ public function findByAnrAndUuid(Anr $anr, string $uuid): ThreatSuperClass
7866
->setMaxResults(1)
7967
->getQuery()
8068
->getOneOrNullResult();
81-
82-
if ($threat === null) {
83-
throw new EntityNotFoundException(
84-
sprintf('Threat with anr ID "%d" and uuid "%s" has not been found.', $anr->getId(), $uuid)
85-
);
86-
}
87-
88-
return $threat;
8969
}
9070

91-
/**
92-
* @param Anr $anr
93-
* @param string[] $uuids
94-
*
95-
* @return array
96-
*/
97-
public function findByAnrAndUuidsIndexedByField(Anr $anr, array $uuids, string $indexField = 'uuid'): array
71+
public function existsWithAnrAndCode(Anr $anr, string $code): bool
9872
{
99-
$queryBuilder = $this->getRepository()->createQueryBuilder('t', 't.' . $indexField);
100-
101-
return $queryBuilder->where('t.anr = :anr')
102-
->andWhere($queryBuilder->expr()->in('t.uuid', $uuids))
103-
->setParameter(':anr', $anr)
73+
return $this->getRepository()->createQueryBuilder('t')
74+
->where('t.anr = :anr')
75+
->andWhere('t.uuid = :code')
76+
->setParameter('anr', $anr)
77+
->setParameter('code', $code)
78+
->setMaxResults(1)
10479
->getQuery()
105-
->getResult();
80+
->getOneOrNullResult() !== null;
10681
}
10782

10883
public function saveEntity(ThreatSuperClass $threat, bool $flushAll = true): void

0 commit comments

Comments
 (0)