Add netbeans project
Add netbeans project

file:b/.gitignore (new)
  /admin/neo4jimporter/target/
  /admin/neo4jimporter/.settings/
  /nbproject/private/
<?php <?php
   
//long contract period (number of weeks/days?) //long contract period (number of weeks/days?)
$heuristics["DATE_LONG_CONTRACT_PERIOD"] = Array( $heuristics["DATE_LONG_CONTRACT_PERIOD"] = Array(
"description" => "long contract period (number of weeks/days?)" "description" => "long contract period (number of weeks/days?)"
); );
   
function DATE_LONG_CONTRACT_PERIOD($cn) { function DATE_LONG_CONTRACT_PERIOD($cn) {
$averageContractPeriod = getAverageContractPeriod(); $averageContractPeriod = getAverageContractPeriod();
$stddevContractPeriod = getstddevContractPeriod(); $stddevContractPeriod = getstddevContractPeriod();
$diff = strtotime($cn['contractEnd']) - strtotime($cn['contractStart']); $diff = strtotime($cn['contractEnd']) - strtotime($cn['contractStart']);
$days = intval($diff / (60 * 60 * 24)); $days = intval($diff / (60 * 60 * 24));
$value = abs($days - $averageContractPeriod) / $stddevContractPeriod; $value = abs($days - $averageContractPeriod) / $stddevContractPeriod;
return Array( return Array(
"heuristic_value" => $value, "heuristic_value" => $value,
"raw_value" => $days, "raw_value" => $days,
"mean" => $averageContractPeriod, "mean" => $averageContractPeriod,
"stddev" => $stddevContractPeriod "stddev" => $stddevContractPeriod
); );
} }
   
$averageContractPeriod; $averageContractPeriod;
   
function getAverageContractPeriod() { function getAverageContractPeriod() {
global $averageContractPeriod, $stddevContractPeriod; global $averageContractPeriod, $stddevContractPeriod;
if (!$averageContractPeriod) { if (!$averageContractPeriod) {
getStddevAverageContractPeriod(); getStddevAverageContractPeriod();
} }
return $averageContractPeriod; return $averageContractPeriod;
} }
   
$stddevContractPeriod; $stddevContractPeriod;
   
function getstddevContractPeriod() { function getstddevContractPeriod() {
global $averageContractPeriod, $stddevContractPeriod; global $averageContractPeriod, $stddevContractPeriod;
if (!$stddevContractPeriod) { if (!$stddevContractPeriod) {
getStddevAverageContractPeriod(); getStddevAverageContractPeriod();
} }
return $stddevContractPeriod; return $stddevContractPeriod;
} }
   
function getStddevAverageContractPeriod() { function getStddevAverageContractPeriod() {
global $averageContractPeriod, $stddevContractPeriod; global $averageContractPeriod, $stddevContractPeriod,$conn;
$query = "select AVG(dateDiff(contractEnd,contractStart)),stddev(dateDiff(contractEnd,contractStart)) from contractnotice"; $query = 'select AVG("contractEnd"-"contractStart"),stddev("contractEnd"-"contractStart") from contractnotice';
$result = $conn->query($query); $result = $conn->query($query);
  databaseError($conn->errorInfo());
$r = $result->fetch(PDO::FETCH_BOTH); $r = $result->fetch(PDO::FETCH_BOTH);
   
$averageContractPeriod = $r[0]; $averageContractPeriod = $r[0];
$stddevContractPeriod = $r[1]; $stddevContractPeriod = $r[1];
} }
   
//Reported late, 45 days? A late contract is a dodgy contract except maybe for variations? //Reported late, 45 days? A late contract is a dodgy contract except maybe for variations?
$heuristics["DATE_REPORTED_LATE"] = Array( $heuristics["DATE_REPORTED_LATE"] = Array(
"description" => "Reported late, 45 days?" "description" => "Reported late, 45 days?"
); );
   
function DATE_REPORTED_LATE($cn) { function DATE_REPORTED_LATE($cn) {
$averageDaysLate = getAverageDaysLate(); $averageDaysLate = getAverageDaysLate();
$stddevDaysLate = getStddevDaysLate(); $stddevDaysLate = getStddevDaysLate();
$diff = strtotime($cn['publishDate']) - strtotime($cn['contractStart']); $diff = strtotime($cn['publishDate']) - strtotime($cn['contractStart']);
$days = intval($diff / (60 * 60 * 24)); $days = intval($diff / (60 * 60 * 24));
if ($days <= 0) { if ($days <= 0) {
$value = 0; $value = 0;
} else { } else {
// +1 demerit for exceeding 45 day requirement // +1 demerit for exceeding 45 day requirement
$value = (abs($days - $averageDaysLate) / $stddevDaysLate) + ($days < 45 ? 0 : 1); $value = (abs($days - $averageDaysLate) / $stddevDaysLate) + ($days < 45 ? 0 : 1);
} }
return Array( return Array(
"heuristic_value" => $value, "heuristic_value" => $value,
"raw_value" => $days, "raw_value" => $days,
"mean" => $averageDaysLate, "mean" => $averageDaysLate,
"stddev" => $stddevDaysLate "stddev" => $stddevDaysLate
); );
} }
   
$averageDaysLate; $averageDaysLate;
   
function getAverageDaysLate() { function getAverageDaysLate() {
global $averageDaysLate; global $averageDaysLate;
if (!$averageDaysLate) { if (!$averageDaysLate) {
getDaysLate(); getDaysLate();
} }
return $averageDaysLate; return $averageDaysLate;
} }
   
$stddevDaysLate; $stddevDaysLate;
   
function getStddevDaysLate() { function getStddevDaysLate() {
global $stddevDaysLate; global $stddevDaysLate;
if (!$stddevDaysLate) { if (!$stddevDaysLate) {
getDaysLate(); getDaysLate();
} }
return $stddevDaysLate; return $stddevDaysLate;
} }
   
function getDaysLate() { function getDaysLate() {
   
global $averageDaysLate, $stddevDaysLate; global $averageDaysLate, $stddevDaysLate,$conn;
   
$query = "select AVG(dateDiff(publishDate,contractStart)), STDDEV(dateDiff(publishDate,contractStart)) from contractnotice"; $query = 'select AVG(extract (day from "publishDate"-"contractStart")), STDDEV(extract (day from "publishDate"-"contractStart")) from contractnotice';
$result = $conn->query($query); $result = $conn->query($query);
  databaseError($conn->errorInfo());
$r = $result->fetch(PDO::FETCH_BOTH); $r = $result->fetch(PDO::FETCH_BOTH);
   
$averageDaysLate = $r[0]; $averageDaysLate = $r[0];
$stddevDaysLate = $r[1]; $stddevDaysLate = $r[1];
} }
   
?> ?>
<?php <?php
include_once ("../lib/common.inc.php"); include_once ("../lib/common.inc.php");
$heuristics = Array(); $heuristics = Array();
//each heuristic adds self to description array //each heuristic adds self to description array
include ("dateHeuristics.php"); include ("dateHeuristics.php");
include ("historyHeuristics.php"); include ("historyHeuristics.php");
//include ("metadataHeuristics.php"); //include ("metadataHeuristics.php");
//include ("valueHeuristics.php"); //include ("valueHeuristics.php");
function runHeuristic($heuristicName, $cn) function runHeuristic($heuristicName, $cn)
{ {
  global $conn;
// check if already ran // check if already ran
$query = "select count(*) from heuristic_results where heuristic_name = '$heuristicName' and CNID = '{$cn['CNID']}'"; $query = "select count(*) from heuristic_results where heuristic_name = '$heuristicName' and \"CNID\" = '{$cn['CNID']}'";
$result = $conn->query($query); $result = $conn->query($query);
  databaseError($conn->errorInfo());
$r = $result->fetch(PDO::FETCH_BOTH); $r = $result->fetch(PDO::FETCH_BOTH);
if ($r[0] == 0) { if ($r[0] == 0) {
// if not, run now // if not, run now
$hresults = call_user_func($heuristicName, $cn); $hresults = call_user_func($heuristicName, $cn);
if (!isset($hresults["heuristic_value"]) || !isset($hresults["raw_value"]) || !isset($hresults["mean"]) || !isset($hresults["stddev"])) { if (!isset($hresults["heuristic_value"]) || !isset($hresults["raw_value"]) || !isset($hresults["mean"]) || !isset($hresults["stddev"])) {
print_r($hresults); print_r($hresults);
die("Missing field in heurtistic $heuristicName result"); die("Missing field in heurtistic $heuristicName result");
} }
$query = "insert into heuristic_results values('$heuristicName', $query = "insert into heuristic_results values('$heuristicName',
'{$hresults["heuristic_value"]}', '{$hresults["heuristic_value"]}',
'{$hresults["raw_value"]}', '{$hresults["raw_value"]}',
'{$hresults["mean"]}', '{$hresults["mean"]}',
'{$hresults["stddev"]}', '{$hresults["stddev"]}',
'{$cn["CNID"]}', '{$cn["CNID"]}',
NOW(), NOW(),
'{$cn["publishDate"]}', '{$cn["publishDate"]}',
'{$cn["agencyABN"]}', '{$cn["agencyABN"]}',
'{$cn["supplierID"]}' '{$cn["supplierID"]}'
)"; )";
// save value and cn data via sql // save value and cn data via sql
$result = $conn->query($query); $result = $conn->query($query);
$errors = $conn->errorInfo(); $errors = $conn->errorInfo();
if ($errors[2] == "") echo "Saved $heuristicName for {$cn["CNID"]} <br>\n"; if ($errors[2] == "") echo "Saved $heuristicName for {$cn["CNID"]} <br>\n";
elseif (strpos($errors[2] , "Duplicate entry") === false) echo $hresults . " failed insert.<br>" . print_r($errors,true) . " <br> $query <br><br>\n"; elseif (strpos($errors[2] , "Duplicate entry") === false) echo $hresults . " failed insert.<br>" . print_r($errors,true) . " <br> $query <br><br>\n";
} }
} }
?> ?>
   
<?php <?php
include_once("heuristics.inc.php"); include_once("heuristics.inc.php");
$query = "SELECT *, agency.abn as agencyABN, IF(supplierABN != '',supplierABN,supplierName) as supplierID  
FROM contractnotice JOIN agency ON contractnotice.agencyName=agency.agencyName";  
   
$query = "SELECT *, agency.abn as agencyABN, IF(supplierABN != '',supplierABN,supplierName) as supplierID $query = 'SELECT *, agency.abn as "agencyABN", case when "supplierABN" != 0 then "supplierABN"::text else "supplierName" end as "supplierID"
FROM contractnotice JOIN agency ON contractnotice.agencyName=agency.agencyName FROM contractnotice JOIN agency ON contractnotice."agencyName"=agency."agencyName"
WHERE DATE(importDate) = (select * from (SELECT DATE(importDate) WHERE DATE("importDate") = (select * from (SELECT DATE("importDate")
FROM contractnotice ORDER BY importDate DESC limit 1) alias)"; FROM contractnotice ORDER BY "importDate" DESC limit 1) alias) limit 10';
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->execute(); $query->execute();
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
foreach ($query->fetchAll() as $cn) { foreach ($query->fetchAll() as $cn) {
//get each new CN from latest update //get each new CN from latest update
foreach ($heuristics as $heuristic => $description) { foreach ($heuristics as $heuristic => $description) {
// run all heuristics // run all heuristics
runHeuristic($heuristic, $cn); runHeuristic($heuristic, $cn);
} }
flush(); flush();
} }
/*foreach agency /*foreach agency
   
aggregate agency metrics aggregate agency metrics
   
foreach supplier foreach supplier
   
aggreate supplier metrics aggreate supplier metrics
   
foreach CN foreach CN
   
aggregate CN metrics */ aggregate CN metrics */
?> ?>
   
  include.path=${php.global.include.path}
  php.version=PHP_5
  source.encoding=UTF-8
  src.dir=.
  tags.asp=false
  tags.short=true
  web.root=.
 
  <?xml version="1.0" encoding="UTF-8"?>
  <project xmlns="http://www.netbeans.org/ns/project/1">
  <type>org.netbeans.modules.php.project</type>
  <configuration>
  <data xmlns="http://www.netbeans.org/ns/php-project/1">
  <name>contractdashboard</name>
  </data>
  </configuration>
  </project>