@@ -24,23 +24,23 @@ discard block |
||
24 | 24 | * @param PropertyId[] $propertyIds |
25 | 25 | * @return array |
26 | 26 | */ |
27 | - public function getExternalData( array $dumpIds, array $externalIds, array $propertyIds ) { |
|
28 | - Assert::parameterElementType( 'string', $dumpIds, '$dumpIds' ); |
|
29 | - Assert::parameterElementType( 'string', $externalIds, '$externalIds' ); |
|
30 | - Assert::parameterElementType( PropertyId::class, $propertyIds, '$propertyIds' ); |
|
31 | - Assert::parameter( count( $dumpIds ) > 0, '$dumpIds', '$dumpIds has to contain at least one element.' ); |
|
32 | - Assert::parameter( count( $externalIds ) > 0, '$externalIds', '$externalIds has to contain at least one element.' ); |
|
27 | + public function getExternalData(array $dumpIds, array $externalIds, array $propertyIds) { |
|
28 | + Assert::parameterElementType('string', $dumpIds, '$dumpIds'); |
|
29 | + Assert::parameterElementType('string', $externalIds, '$externalIds'); |
|
30 | + Assert::parameterElementType(PropertyId::class, $propertyIds, '$propertyIds'); |
|
31 | + Assert::parameter(count($dumpIds) > 0, '$dumpIds', '$dumpIds has to contain at least one element.'); |
|
32 | + Assert::parameter(count($externalIds) > 0, '$externalIds', '$externalIds has to contain at least one element.'); |
|
33 | 33 | |
34 | 34 | $conditions = [ |
35 | 35 | 'dump_id' => $dumpIds, |
36 | 36 | 'external_id' => $externalIds |
37 | 37 | ]; |
38 | - if ( $propertyIds ) { |
|
38 | + if ($propertyIds) { |
|
39 | 39 | $conditions['pid'] = $propertyIds; |
40 | 40 | } |
41 | 41 | |
42 | 42 | $externalData = []; |
43 | - $db = wfGetDB( DB_REPLICA ); |
|
43 | + $db = wfGetDB(DB_REPLICA); |
|
44 | 44 | $result = $db->select( |
45 | 45 | self::TABLE_NAME, |
46 | 46 | [ |
@@ -52,7 +52,7 @@ discard block |
||
52 | 52 | $conditions |
53 | 53 | ); |
54 | 54 | |
55 | - foreach ( $result as $row ) { |
|
55 | + foreach ($result as $row) { |
|
56 | 56 | $externalData[$row->dump_id][$row->external_id][$row->pid][] = $row->external_value; |
57 | 57 | } |
58 | 58 | |
@@ -68,13 +68,13 @@ discard block |
||
68 | 68 | * @param string $externalValue |
69 | 69 | * @return bool |
70 | 70 | */ |
71 | - public function insert( $dumpId, $externalId, PropertyId $propertyId, $externalValue ) { |
|
72 | - Assert::parameterType( 'string', $dumpId, '$dumpId' ); |
|
73 | - Assert::parameterType( 'string', $externalId, '$externalId' ); |
|
74 | - Assert::parameterType( 'string', $externalValue, '$externalValue' ); |
|
71 | + public function insert($dumpId, $externalId, PropertyId $propertyId, $externalValue) { |
|
72 | + Assert::parameterType('string', $dumpId, '$dumpId'); |
|
73 | + Assert::parameterType('string', $externalId, '$externalId'); |
|
74 | + Assert::parameterType('string', $externalValue, '$externalValue'); |
|
75 | 75 | |
76 | - $externalDataBatch = [ func_get_args() ]; |
|
77 | - return $this->insertBatch( $externalDataBatch ); |
|
76 | + $externalDataBatch = [func_get_args()]; |
|
77 | + return $this->insertBatch($externalDataBatch); |
|
78 | 78 | } |
79 | 79 | |
80 | 80 | /** |
@@ -84,10 +84,10 @@ discard block |
||
84 | 84 | * @throws DBError |
85 | 85 | * @return bool |
86 | 86 | */ |
87 | - public function insertBatch( array $externalDataBatch ) { |
|
88 | - $db = wfGetDB( DB_MASTER ); |
|
87 | + public function insertBatch(array $externalDataBatch) { |
|
88 | + $db = wfGetDB(DB_MASTER); |
|
89 | 89 | $accumulator = array_map( |
90 | - function ( $externalData ) use ( $db ) { |
|
90 | + function($externalData) use ($db) { |
|
91 | 91 | return [ |
92 | 92 | 'dump_id' => $externalData[0], |
93 | 93 | 'external_id' => $externalData[1], |
@@ -100,9 +100,9 @@ discard block |
||
100 | 100 | |
101 | 101 | try { |
102 | 102 | $db->begin(); |
103 | - $result = $db->insert( self::TABLE_NAME, $accumulator ); |
|
103 | + $result = $db->insert(self::TABLE_NAME, $accumulator); |
|
104 | 104 | $db->commit(); |
105 | - } catch ( DBError $ex ) { |
|
105 | + } catch (DBError $ex) { |
|
106 | 106 | $db->rollback(); |
107 | 107 | throw $ex; |
108 | 108 | } |
@@ -117,22 +117,22 @@ discard block |
||
117 | 117 | * @param int $batchSize |
118 | 118 | * @throws \Wikimedia\Rdbms\DBUnexpectedError |
119 | 119 | */ |
120 | - public function deleteOfDump( $dumpId, $batchSize = 1000 ) { |
|
121 | - Assert::parameterType( 'string', $dumpId, '$dumpId' ); |
|
122 | - Assert::parameterType( 'integer', $batchSize, 'batchSize' ); |
|
120 | + public function deleteOfDump($dumpId, $batchSize = 1000) { |
|
121 | + Assert::parameterType('string', $dumpId, '$dumpId'); |
|
122 | + Assert::parameterType('integer', $batchSize, 'batchSize'); |
|
123 | 123 | |
124 | 124 | $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory(); |
125 | - $db = $lbFactory->getMainLB()->getConnection( DB_MASTER ); |
|
126 | - if ( $db->getType() === 'sqlite' ) { |
|
127 | - $db->delete( self::TABLE_NAME, [ 'dump_id' => $dumpId ] ); |
|
125 | + $db = $lbFactory->getMainLB()->getConnection(DB_MASTER); |
|
126 | + if ($db->getType() === 'sqlite') { |
|
127 | + $db->delete(self::TABLE_NAME, ['dump_id' => $dumpId]); |
|
128 | 128 | } else { |
129 | 129 | do { |
130 | - $db->commit( __METHOD__, 'flush' ); |
|
130 | + $db->commit(__METHOD__, 'flush'); |
|
131 | 131 | $lbFactory->waitForReplication(); |
132 | - $table = $db->tableName( self::TABLE_NAME ); |
|
133 | - $condition = 'dump_id = ' . $db->addQuotes( $dumpId ); |
|
134 | - $db->query( sprintf( 'DELETE FROM %s WHERE %s LIMIT %d', $table, $condition, $batchSize ) ); |
|
135 | - } while ( $db->affectedRows() > 0 ); |
|
132 | + $table = $db->tableName(self::TABLE_NAME); |
|
133 | + $condition = 'dump_id = '.$db->addQuotes($dumpId); |
|
134 | + $db->query(sprintf('DELETE FROM %s WHERE %s LIMIT %d', $table, $condition, $batchSize)); |
|
135 | + } while ($db->affectedRows() > 0); |
|
136 | 136 | } |
137 | 137 | } |
138 | 138 |
@@ -47,13 +47,13 @@ discard block |
||
47 | 47 | public function import() { |
48 | 48 | $dumpIds = $this->insertMetaInformation(); |
49 | 49 | |
50 | - $this->log( "\nDelete old database entries...\n" ); |
|
50 | + $this->log("\nDelete old database entries...\n"); |
|
51 | 51 | |
52 | - foreach ( $dumpIds as $dumpId ) { |
|
53 | - $this->externalDataRepo->deleteOfDump( $dumpId, $this->importSettings->getBatchSize() ); |
|
52 | + foreach ($dumpIds as $dumpId) { |
|
53 | + $this->externalDataRepo->deleteOfDump($dumpId, $this->importSettings->getBatchSize()); |
|
54 | 54 | } |
55 | 55 | |
56 | - $this->log( "\n" ); |
|
56 | + $this->log("\n"); |
|
57 | 57 | |
58 | 58 | $this->insertExternalValues(); |
59 | 59 | } |
@@ -64,52 +64,52 @@ discard block |
||
64 | 64 | * @return array |
65 | 65 | */ |
66 | 66 | protected function insertMetaInformation() { |
67 | - $this->log( "Insert new dump meta information\n" ); |
|
67 | + $this->log("Insert new dump meta information\n"); |
|
68 | 68 | |
69 | - $csvFile = fopen( $this->importSettings->getDumpInformationFilePath(), 'rb' ); |
|
70 | - if ( !$csvFile ) { |
|
71 | - exit( 'Error while reading CSV file.' ); |
|
69 | + $csvFile = fopen($this->importSettings->getDumpInformationFilePath(), 'rb'); |
|
70 | + if (!$csvFile) { |
|
71 | + exit('Error while reading CSV file.'); |
|
72 | 72 | } |
73 | 73 | |
74 | 74 | $i = 0; |
75 | 75 | $dumpIds = []; |
76 | - while ( $data = fgetcsv( $csvFile ) ) { |
|
76 | + while ($data = fgetcsv($csvFile)) { |
|
77 | 77 | $identifierPropertyIds = array_map( |
78 | - function ( $propertyId ) { |
|
79 | - return new PropertyId( $propertyId ); |
|
78 | + function($propertyId) { |
|
79 | + return new PropertyId($propertyId); |
|
80 | 80 | }, |
81 | - json_decode( $data[2] ) |
|
81 | + json_decode($data[2]) |
|
82 | 82 | ); |
83 | 83 | try { |
84 | 84 | $dumpMetaInformation = new DumpMetaInformation( |
85 | 85 | $data[0], |
86 | - new ItemId( $data[1] ), |
|
86 | + new ItemId($data[1]), |
|
87 | 87 | $identifierPropertyIds, |
88 | 88 | $data[3], |
89 | 89 | $data[4], |
90 | 90 | $data[5], |
91 | - intval( $data[6] ), |
|
92 | - new ItemId( $data[7] ) |
|
91 | + intval($data[6]), |
|
92 | + new ItemId($data[7]) |
|
93 | 93 | ); |
94 | - } catch ( \InvalidArgumentException $e ) { |
|
95 | - exit( 'Input file has bad formatted values.' ); |
|
94 | + } catch (\InvalidArgumentException $e) { |
|
95 | + exit('Input file has bad formatted values.'); |
|
96 | 96 | } |
97 | 97 | $dumpIds[] = $dumpMetaInformation->getDumpId(); |
98 | 98 | |
99 | 99 | try { |
100 | - $this->dumpMetaInformationStore->save( $dumpMetaInformation ); |
|
101 | - } catch ( DBError $e ) { |
|
102 | - exit( 'Unknown database error occurred.' ); |
|
100 | + $this->dumpMetaInformationStore->save($dumpMetaInformation); |
|
101 | + } catch (DBError $e) { |
|
102 | + exit('Unknown database error occurred.'); |
|
103 | 103 | } |
104 | 104 | |
105 | 105 | $i++; |
106 | - $this->log( "\r\033[K" ); |
|
107 | - $this->log( "$i rows inserted or updated" ); |
|
106 | + $this->log("\r\033[K"); |
|
107 | + $this->log("$i rows inserted or updated"); |
|
108 | 108 | } |
109 | 109 | |
110 | - fclose( $csvFile ); |
|
110 | + fclose($csvFile); |
|
111 | 111 | |
112 | - $this->log( "\n" ); |
|
112 | + $this->log("\n"); |
|
113 | 113 | |
114 | 114 | return $dumpIds; |
115 | 115 | } |
@@ -118,32 +118,32 @@ discard block |
||
118 | 118 | * Inserts external values stored in csv file into database |
119 | 119 | */ |
120 | 120 | private function insertExternalValues() { |
121 | - $this->log( "Insert new data values\n" ); |
|
121 | + $this->log("Insert new data values\n"); |
|
122 | 122 | |
123 | - $csvFile = fopen( $this->importSettings->getExternalValuesFilePath(), 'rb' ); |
|
124 | - if ( !$csvFile ) { |
|
125 | - exit( 'Error while reading CSV file.' ); |
|
123 | + $csvFile = fopen($this->importSettings->getExternalValuesFilePath(), 'rb'); |
|
124 | + if (!$csvFile) { |
|
125 | + exit('Error while reading CSV file.'); |
|
126 | 126 | } |
127 | 127 | |
128 | 128 | $i = 0; |
129 | 129 | $accumulator = []; |
130 | 130 | $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory(); |
131 | - while ( true ) { |
|
132 | - $data = fgetcsv( $csvFile ); |
|
133 | - if ( $data === false || ++$i % $this->importSettings->getBatchSize() === 0 ) { |
|
131 | + while (true) { |
|
132 | + $data = fgetcsv($csvFile); |
|
133 | + if ($data === false || ++$i % $this->importSettings->getBatchSize() === 0) { |
|
134 | 134 | try { |
135 | - $this->externalDataRepo->insertBatch( $accumulator ); |
|
136 | - } catch ( DBError $e ) { |
|
137 | - exit( 'Unknown database error occurred.' ); |
|
135 | + $this->externalDataRepo->insertBatch($accumulator); |
|
136 | + } catch (DBError $e) { |
|
137 | + exit('Unknown database error occurred.'); |
|
138 | 138 | } |
139 | 139 | $lbFactory->waitForReplication(); |
140 | 140 | |
141 | - $this->log( "\r\033[K" ); |
|
142 | - $this->log( "$i rows inserted" ); |
|
141 | + $this->log("\r\033[K"); |
|
142 | + $this->log("$i rows inserted"); |
|
143 | 143 | |
144 | 144 | $accumulator = []; |
145 | 145 | |
146 | - if ( $data === false ) { |
|
146 | + if ($data === false) { |
|
147 | 147 | break; |
148 | 148 | } |
149 | 149 | } |
@@ -151,16 +151,16 @@ discard block |
||
151 | 151 | $accumulator[] = $data; |
152 | 152 | } |
153 | 153 | |
154 | - fclose( $csvFile ); |
|
154 | + fclose($csvFile); |
|
155 | 155 | |
156 | - $this->log( "\n" ); |
|
156 | + $this->log("\n"); |
|
157 | 157 | } |
158 | 158 | |
159 | 159 | /** |
160 | 160 | * @param string $text |
161 | 161 | */ |
162 | - private function log( $text ) { |
|
163 | - if ( !$this->importSettings->isQuiet() ) { |
|
162 | + private function log($text) { |
|
163 | + if (!$this->importSettings->isQuiet()) { |
|
164 | 164 | print $text; |
165 | 165 | } |
166 | 166 | } |