From ec61c15cb2623dc43309acb63d8d056530e468b4 Mon Sep 17 00:00:00 2001 From: Bob Trahan Date: Fri, 26 Jul 2013 14:33:31 -0700 Subject: [PATCH] move repository arcanist projects over to new phid stuff Summary: also submit casual entry for longest class name award with new query class. Ref T2715 Test Plan: phid.query and saw the right arcanist project Reviewers: epriestley Reviewed By: epriestley CC: aran, Korvin Maniphest Tasks: T2715 Differential Revision: https://secure.phabricator.com/D6586 --- src/__phutil_library_map__.php | 10 +++- .../phid/PhabricatorPHIDConstants.php | 1 - .../handle/PhabricatorObjectHandleData.php | 23 -------- .../PhabricatorRepositoryConfigOptions.php | 3 + .../PhabricatorApplicationRepositories.php | 3 + ...catorRepositoryPHIDTypeArcanistProject.php | 43 ++++++++++++++ ...bricatorRepositoryArcanistProjectQuery.php | 59 +++++++++++++++++++ .../PhabricatorRepositoryArcanistProject.php | 33 ++++++++++- 8 files changed, 148 insertions(+), 27 deletions(-) create mode 100644 src/applications/repository/phid/PhabricatorRepositoryPHIDTypeArcanistProject.php create mode 100644 src/applications/repository/query/PhabricatorRepositoryArcanistProjectQuery.php diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index a0301ae63f..11520bf1fb 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -1445,6 +1445,7 @@ phutil_register_library_map(array( 'PhabricatorRepositoryArcanistProject' => 'applications/repository/storage/PhabricatorRepositoryArcanistProject.php', 'PhabricatorRepositoryArcanistProjectDeleteController' => 'applications/repository/controller/PhabricatorRepositoryArcanistProjectDeleteController.php', 'PhabricatorRepositoryArcanistProjectEditController' => 'applications/repository/controller/PhabricatorRepositoryArcanistProjectEditController.php', + 'PhabricatorRepositoryArcanistProjectQuery' => 'applications/repository/query/PhabricatorRepositoryArcanistProjectQuery.php', 'PhabricatorRepositoryAuditRequest' => 'applications/repository/storage/PhabricatorRepositoryAuditRequest.php', 'PhabricatorRepositoryBranch' => 'applications/repository/storage/PhabricatorRepositoryBranch.php', 'PhabricatorRepositoryCommit' => 'applications/repository/storage/PhabricatorRepositoryCommit.php', @@ -1475,6 +1476,7 @@ phutil_register_library_map(array( 'PhabricatorRepositoryManagementWorkflow' => 'applications/repository/management/PhabricatorRepositoryManagementWorkflow.php', 'PhabricatorRepositoryMercurialCommitChangeParserWorker' => 'applications/repository/worker/commitchangeparser/PhabricatorRepositoryMercurialCommitChangeParserWorker.php', 'PhabricatorRepositoryMercurialCommitMessageParserWorker' => 'applications/repository/worker/commitmessageparser/PhabricatorRepositoryMercurialCommitMessageParserWorker.php', + 'PhabricatorRepositoryPHIDTypeArcanistProject' => 'applications/repository/phid/PhabricatorRepositoryPHIDTypeArcanistProject.php', 'PhabricatorRepositoryPHIDTypeCommit' => 'applications/repository/phid/PhabricatorRepositoryPHIDTypeCommit.php', 'PhabricatorRepositoryPHIDTypeRepository' => 'applications/repository/phid/PhabricatorRepositoryPHIDTypeRepository.php', 'PhabricatorRepositoryPullEngine' => 'applications/repository/engine/PhabricatorRepositoryPullEngine.php', @@ -3484,9 +3486,14 @@ phutil_register_library_map(array( 1 => 'PhabricatorPolicyInterface', 2 => 'PhabricatorMarkupInterface', ), - 'PhabricatorRepositoryArcanistProject' => 'PhabricatorRepositoryDAO', + 'PhabricatorRepositoryArcanistProject' => + array( + 0 => 'PhabricatorRepositoryDAO', + 1 => 'PhabricatorPolicyInterface', + ), 'PhabricatorRepositoryArcanistProjectDeleteController' => 'PhabricatorRepositoryController', 'PhabricatorRepositoryArcanistProjectEditController' => 'PhabricatorRepositoryController', + 'PhabricatorRepositoryArcanistProjectQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', 'PhabricatorRepositoryAuditRequest' => 'PhabricatorRepositoryDAO', 'PhabricatorRepositoryBranch' => 'PhabricatorRepositoryDAO', 'PhabricatorRepositoryCommit' => @@ -3520,6 +3527,7 @@ phutil_register_library_map(array( 'PhabricatorRepositoryManagementWorkflow' => 'PhutilArgumentWorkflow', 'PhabricatorRepositoryMercurialCommitChangeParserWorker' => 'PhabricatorRepositoryCommitChangeParserWorker', 'PhabricatorRepositoryMercurialCommitMessageParserWorker' => 'PhabricatorRepositoryCommitMessageParserWorker', + 'PhabricatorRepositoryPHIDTypeArcanistProject' => 'PhabricatorPHIDType', 'PhabricatorRepositoryPHIDTypeCommit' => 'PhabricatorPHIDType', 'PhabricatorRepositoryPHIDTypeRepository' => 'PhabricatorPHIDType', 'PhabricatorRepositoryPullEngine' => 'PhabricatorRepositoryEngine', diff --git a/src/applications/phid/PhabricatorPHIDConstants.php b/src/applications/phid/PhabricatorPHIDConstants.php index a4a27818ea..f9a7dbf709 100644 --- a/src/applications/phid/PhabricatorPHIDConstants.php +++ b/src/applications/phid/PhabricatorPHIDConstants.php @@ -6,7 +6,6 @@ final class PhabricatorPHIDConstants { const PHID_TYPE_UNKNOWN = '????'; const PHID_TYPE_MAGIC = '!!!!'; const PHID_TYPE_STRY = 'STRY'; - const PHID_TYPE_APRJ = 'APRJ'; const PHID_TYPE_ACMT = 'ACMT'; const PHID_TYPE_DRYR = 'DRYR'; const PHID_TYPE_DRYL = 'DRYL'; diff --git a/src/applications/phid/handle/PhabricatorObjectHandleData.php b/src/applications/phid/handle/PhabricatorObjectHandleData.php index 6014a1783a..25b5581d95 100644 --- a/src/applications/phid/handle/PhabricatorObjectHandleData.php +++ b/src/applications/phid/handle/PhabricatorObjectHandleData.php @@ -48,13 +48,6 @@ final class PhabricatorObjectHandleData { switch ($type) { - case PhabricatorPHIDConstants::PHID_TYPE_APRJ: - $project_dao = new PhabricatorRepositoryArcanistProject(); - $projects = $project_dao->loadAllWhere( - 'phid IN (%Ls)', - $phids); - return mpull($projects, null, 'getPHID'); - case PhabricatorPHIDConstants::PHID_TYPE_XACT: $subtypes = array(); foreach ($phids as $phid) { @@ -137,22 +130,6 @@ final class PhabricatorObjectHandleData { } break; - case PhabricatorPHIDConstants::PHID_TYPE_APRJ: - foreach ($phids as $phid) { - $handle = new PhabricatorObjectHandle(); - $handle->setPHID($phid); - $handle->setType($type); - if (empty($objects[$phid])) { - $handle->setName('Unknown Arcanist Project'); - } else { - $project = $objects[$phid]; - $handle->setName($project->getName()); - $handle->setComplete(true); - } - $handles[$phid] = $handle; - } - break; - default: foreach ($phids as $phid) { $handle = new PhabricatorObjectHandle(); diff --git a/src/applications/repository/PhabricatorRepositoryConfigOptions.php b/src/applications/repository/PhabricatorRepositoryConfigOptions.php index f2b0e449a4..17d52652a8 100644 --- a/src/applications/repository/PhabricatorRepositoryConfigOptions.php +++ b/src/applications/repository/PhabricatorRepositoryConfigOptions.php @@ -1,5 +1,8 @@ setViewer($query->getViewer()) + ->withPHIDs($phids) + ->execute(); + } + + public function loadHandles( + PhabricatorHandleQuery $query, + array $handles, + array $objects) { + + foreach ($handles as $phid => $handle) { + $project = $objects[$phid]; + $handle->setName($project->getName()); + } + } + +} diff --git a/src/applications/repository/query/PhabricatorRepositoryArcanistProjectQuery.php b/src/applications/repository/query/PhabricatorRepositoryArcanistProjectQuery.php new file mode 100644 index 0000000000..1118099e86 --- /dev/null +++ b/src/applications/repository/query/PhabricatorRepositoryArcanistProjectQuery.php @@ -0,0 +1,59 @@ +ids = $ids; + return $this; + } + + public function withPHIDs(array $phids) { + $this->phids = $phids; + return $this; + } + + protected function loadPage() { + $table = new PhabricatorRepositoryArcanistProject(); + $conn_r = $table->establishConnection('r'); + + $data = queryfx_all( + $conn_r, + 'SELECT * FROM %T %Q %Q %Q', + $table->getTableName(), + $this->buildWhereClause($conn_r), + $this->buildOrderClause($conn_r), + $this->buildLimitClause($conn_r)); + + return $table->loadAllFromArray($data); + } + + private function buildWhereClause(AphrontDatabaseConnection $conn_r) { + $where = array(); + + if ($this->ids) { + $where[] = qsprintf( + $conn_r, + 'id IN (%Ld)', + $this->ids); + } + + if ($this->phids) { + $where[] = qsprintf( + $conn_r, + 'phid IN (%Ls)', + $this->phids); + } + + $where[] = $this->buildPagingClause($conn_r); + + return $this->formatWhereClause($where); + } + +} diff --git a/src/applications/repository/storage/PhabricatorRepositoryArcanistProject.php b/src/applications/repository/storage/PhabricatorRepositoryArcanistProject.php index 3af27055b6..a34a616868 100644 --- a/src/applications/repository/storage/PhabricatorRepositoryArcanistProject.php +++ b/src/applications/repository/storage/PhabricatorRepositoryArcanistProject.php @@ -1,7 +1,11 @@