added commit command
Esse commit está contido em:
@@ -12,6 +12,171 @@ namespace DAO;
|
|||||||
* @author felipe
|
* @author felipe
|
||||||
*/
|
*/
|
||||||
class Project{
|
class Project{
|
||||||
|
public $data= null;
|
||||||
|
public $versionId= 0;
|
||||||
|
public $tag= '';
|
||||||
|
public $description= '';
|
||||||
|
public $originalCode= '';
|
||||||
|
public $framework= '';
|
||||||
|
|
||||||
|
public function getCurrentEntities($vs=false)
|
||||||
|
{
|
||||||
|
$qr= "SELECT entity.name as name,
|
||||||
|
pk_entity,
|
||||||
|
entity.version as version
|
||||||
|
from entity,
|
||||||
|
version
|
||||||
|
where fk_project = ".\Mind::$currentProject['pk_project']."
|
||||||
|
and fk_version= pk_version
|
||||||
|
and status = ".\COMMIT_STATUS_OK;
|
||||||
|
if($vs)
|
||||||
|
$qr.= " and fk_version = ".$vs."";
|
||||||
|
|
||||||
|
$entities= $this->db->query($qr);
|
||||||
|
return $entities;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function insertProperty(\MindProperty $prop, $enKey)
|
||||||
|
{
|
||||||
|
$refs= "";
|
||||||
|
if($prop->refTo)
|
||||||
|
$refs= $prop->refTo[0]->name.".".$prop->refTo[1]->name;
|
||||||
|
$qr= "INSERT into property
|
||||||
|
(
|
||||||
|
name,
|
||||||
|
type,
|
||||||
|
size,
|
||||||
|
options,
|
||||||
|
default_value,
|
||||||
|
unique_value,
|
||||||
|
required,
|
||||||
|
comment,
|
||||||
|
status,
|
||||||
|
fk_entity,
|
||||||
|
ref_to_property
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
'".$prop->name."',
|
||||||
|
'".$prop->type."',
|
||||||
|
'".$prop->size."',
|
||||||
|
'".JSON_encode($prop->options)."',
|
||||||
|
'".$prop->default."',
|
||||||
|
'".$prop->unique."',
|
||||||
|
'".$prop->required."',
|
||||||
|
'".$prop->comment."',
|
||||||
|
".\COMMIT_STATUS_OK.",
|
||||||
|
".$enKey.",
|
||||||
|
'".$refs."'
|
||||||
|
)";
|
||||||
|
$this->db->execute($qr);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getProperties(Array $entity)
|
||||||
|
{
|
||||||
|
$qr= "select pk_property,
|
||||||
|
property.name as name,
|
||||||
|
type,
|
||||||
|
size,
|
||||||
|
options,
|
||||||
|
default_value,
|
||||||
|
unique_value,
|
||||||
|
required,
|
||||||
|
comment,
|
||||||
|
ref_to_property
|
||||||
|
from property,
|
||||||
|
entity
|
||||||
|
where pk_entity = fk_entity
|
||||||
|
and entity.pk_entity='".$entity['pk_entity']."'";
|
||||||
|
$props= $this->db->query($qr);
|
||||||
|
$ret= Array();
|
||||||
|
foreach($props as $prop)
|
||||||
|
{
|
||||||
|
$ret[$prop['name']]= $prop;
|
||||||
|
}
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function markAsChanged(Array $en)
|
||||||
|
{
|
||||||
|
$qr= "UPDATE entity
|
||||||
|
SET status= ".\COMMIT_STATUS_CHANGED."
|
||||||
|
WHERE pk_entity= ".$en['pk_entity'];
|
||||||
|
return $this->db->execute($qr);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function markAsDopped(Array $en)
|
||||||
|
{
|
||||||
|
$qr= "UPDATE entity
|
||||||
|
SET status= ".\COMMIT_STATUS_DROP."
|
||||||
|
WHERE pk_entity= ".$en['pk_entity'];
|
||||||
|
return $this->db->execute($qr);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addNewVersion()
|
||||||
|
{
|
||||||
|
$this->data['version']++;
|
||||||
|
|
||||||
|
$qr_vsProj= "INSERT into version
|
||||||
|
(
|
||||||
|
version,
|
||||||
|
tag,
|
||||||
|
obs,
|
||||||
|
originalcode,
|
||||||
|
machine_lang,
|
||||||
|
framework,
|
||||||
|
database,
|
||||||
|
fk_project,
|
||||||
|
fk_user
|
||||||
|
)
|
||||||
|
values
|
||||||
|
(
|
||||||
|
'".$this->data['version']."',
|
||||||
|
'".$this->tag."',
|
||||||
|
'".$this->description."',
|
||||||
|
'".$this->originalCode."',
|
||||||
|
'".$this->data['technology']."',
|
||||||
|
'".$this->framework."',
|
||||||
|
'".$this->data['database_drive']."',
|
||||||
|
".$this->data['pk_project'].",
|
||||||
|
".$_SESSION['pk_user']."
|
||||||
|
)";
|
||||||
|
if($this->db->execute($qr_vsProj))
|
||||||
|
{
|
||||||
|
$this->versionId= $this->db->lastInsertedId;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function insertEntity(\MindEntity $entity,
|
||||||
|
$vs=1,
|
||||||
|
$status=\COMMIT_STATUS_OK)
|
||||||
|
{
|
||||||
|
$qr= "INSERT into entity
|
||||||
|
(
|
||||||
|
name,
|
||||||
|
version,
|
||||||
|
status,
|
||||||
|
fk_version
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
'".$entity->name."',
|
||||||
|
".$vs.",
|
||||||
|
".$status.",
|
||||||
|
".$this->versionId."
|
||||||
|
)";
|
||||||
|
$entities= $this->db->execute($qr);
|
||||||
|
$enKey= $this->db->lastInsertedId;
|
||||||
|
|
||||||
|
foreach($entity->properties as &$prop)
|
||||||
|
{
|
||||||
|
$this->insertProperty($prop, $enKey);
|
||||||
|
}
|
||||||
|
return $enKey;
|
||||||
|
}
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->db= new \MindDB();
|
$this->db= new \MindDB();
|
||||||
|
|||||||
@@ -1,166 +1,19 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* To change this template, choose Tools | Templates
|
* This file is part of theWebMind Project.
|
||||||
* and open the template in the editor.
|
* It offers features to deal with the project table into the database
|
||||||
*/
|
*/
|
||||||
namespace DAO;
|
namespace DAO;
|
||||||
/**
|
/**
|
||||||
* Description of TableFactory
|
* TableFactory: will work with the DAO\Table class
|
||||||
*
|
*
|
||||||
|
* @package VCS
|
||||||
|
* @subpackage DAO
|
||||||
* @author felipe
|
* @author felipe
|
||||||
*/
|
*/
|
||||||
class ProjectFactory extends Project{
|
class ProjectFactory extends Project{
|
||||||
public $data= null;
|
|
||||||
public $versionId= 0;
|
|
||||||
public $tag= '';
|
|
||||||
public $description= '';
|
|
||||||
public $originalCode= '';
|
|
||||||
public $framework= '';
|
|
||||||
|
|
||||||
public function addNewVersion()
|
|
||||||
{
|
|
||||||
$this->data['version']++;
|
|
||||||
|
|
||||||
$qr_vsProj= "INSERT into version
|
|
||||||
(
|
|
||||||
version,
|
|
||||||
tag,
|
|
||||||
obs,
|
|
||||||
originalcode,
|
|
||||||
machine_lang,
|
|
||||||
framework,
|
|
||||||
database,
|
|
||||||
fk_project,
|
|
||||||
fk_user
|
|
||||||
)
|
|
||||||
values
|
|
||||||
(
|
|
||||||
'".$this->data['version']."',
|
|
||||||
'".$this->tag."',
|
|
||||||
'".$this->description."',
|
|
||||||
'".$this->originalCode."',
|
|
||||||
'".$this->data['technology']."',
|
|
||||||
'".$this->framework."',
|
|
||||||
'".$this->data['database_drive']."',
|
|
||||||
".$this->data['pk_project'].",
|
|
||||||
".$_SESSION['pk_user']."
|
|
||||||
)";
|
|
||||||
if($this->db->execute($qr_vsProj))
|
|
||||||
{
|
|
||||||
$this->versionId= $this->db->lastInsertedId;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getCurrentEntities($vs=false)
|
|
||||||
{
|
|
||||||
$qr= "SELECT entity.name as name,
|
|
||||||
pk_entity,
|
|
||||||
entity.version as version
|
|
||||||
from entity,
|
|
||||||
version
|
|
||||||
where fk_project = ".\Mind::$currentProject['pk_project']."
|
|
||||||
and fk_version= pk_version
|
|
||||||
and status = ".\COMMIT_STATUS_OK;
|
|
||||||
if($vs)
|
|
||||||
$qr.= " and fk_version = ".$vs."";
|
|
||||||
|
|
||||||
$entities= $this->db->query($qr);
|
|
||||||
return $entities;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function insertProperty(\MindProperty $prop, $enKey)
|
|
||||||
{
|
|
||||||
$refs= "";
|
|
||||||
if($prop->refTo)
|
|
||||||
$refs= $prop->refTo[0]->name.".".$prop->refTo[1]->name;
|
|
||||||
$qr= "INSERT into property
|
|
||||||
(
|
|
||||||
name,
|
|
||||||
type,
|
|
||||||
size,
|
|
||||||
options,
|
|
||||||
default_value,
|
|
||||||
unique_value,
|
|
||||||
required,
|
|
||||||
comment,
|
|
||||||
status,
|
|
||||||
fk_entity,
|
|
||||||
ref_to_property
|
|
||||||
)
|
|
||||||
VALUES
|
|
||||||
(
|
|
||||||
'".$prop->name."',
|
|
||||||
'".$prop->type."',
|
|
||||||
'".$prop->size."',
|
|
||||||
'".JSON_encode($prop->options)."',
|
|
||||||
'".$prop->default."',
|
|
||||||
'".$prop->unique."',
|
|
||||||
'".$prop->required."',
|
|
||||||
'".$prop->comment."',
|
|
||||||
".\COMMIT_STATUS_OK.",
|
|
||||||
".$enKey.",
|
|
||||||
'".$refs."'
|
|
||||||
)";
|
|
||||||
$this->db->execute($qr);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function insertEntity(\MindEntity $entity,
|
|
||||||
$vs=1,
|
|
||||||
$status=\COMMIT_STATUS_OK)
|
|
||||||
{
|
|
||||||
$qr= "INSERT into entity
|
|
||||||
(
|
|
||||||
name,
|
|
||||||
version,
|
|
||||||
status,
|
|
||||||
fk_version
|
|
||||||
)
|
|
||||||
VALUES
|
|
||||||
(
|
|
||||||
'".$entity->name."',
|
|
||||||
".$vs.",
|
|
||||||
".$status.",
|
|
||||||
".$this->versionId."
|
|
||||||
)";
|
|
||||||
$entities= $this->db->execute($qr);
|
|
||||||
$enKey= $this->db->lastInsertedId;
|
|
||||||
|
|
||||||
foreach($entity->properties as &$prop)
|
|
||||||
{
|
|
||||||
$this->insertProperty($prop, $enKey);
|
|
||||||
}
|
|
||||||
return $enKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getProperties(Array $entity)
|
|
||||||
{
|
|
||||||
$qr= "select pk_property,
|
|
||||||
property.name as name,
|
|
||||||
type,
|
|
||||||
size,
|
|
||||||
options,
|
|
||||||
default_value,
|
|
||||||
unique_value,
|
|
||||||
required,
|
|
||||||
comment,
|
|
||||||
ref_to_property
|
|
||||||
from property,
|
|
||||||
entity
|
|
||||||
where pk_entity = fk_entity
|
|
||||||
and entity.pk_entity='".$entity['pk_entity']."'";
|
|
||||||
$props= $this->db->query($qr);
|
|
||||||
$ret= Array();
|
|
||||||
foreach($props as $prop)
|
|
||||||
{
|
|
||||||
$ret[$prop['name']]= $prop;
|
|
||||||
}
|
|
||||||
return $ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public function areDifferent(Array $entity1, \MindEntity $entity2)
|
public function areDifferent(Array $entity1, \MindEntity $entity2)
|
||||||
{
|
{
|
||||||
$props= $this->getProperties($entity1);
|
$props= $this->getProperties($entity1);
|
||||||
@@ -202,22 +55,6 @@ class ProjectFactory extends Project{
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function markAsChanged(Array $en)
|
|
||||||
{
|
|
||||||
$qr= "UPDATE entity
|
|
||||||
SET status= ".\COMMIT_STATUS_CHANGED."
|
|
||||||
WHERE pk_entity= ".$en['pk_entity'];
|
|
||||||
return $this->db->execute($qr);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function markAsDopped(Array $en)
|
|
||||||
{
|
|
||||||
$qr= "UPDATE entity
|
|
||||||
SET status= ".\COMMIT_STATUS_DROP."
|
|
||||||
WHERE pk_entity= ".$en['pk_entity'];
|
|
||||||
return $this->db->execute($qr);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function saveEntities(&$currentEntities)
|
public function saveEntities(&$currentEntities)
|
||||||
{
|
{
|
||||||
$enKey= null;
|
$enKey= null;
|
||||||
@@ -254,11 +91,11 @@ class ProjectFactory extends Project{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if($commited)
|
if($commited)
|
||||||
echo "CVS: Commited to version ".$this->data['version']."\n";
|
echo "VCS: Commited to version ".$this->data['version']."\n";
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$this->data['version']--;
|
$this->data['version']--;
|
||||||
echo "CVS: Nothing to commit...still in version ".
|
echo "VCS: Nothing to commit...still in version ".
|
||||||
$this->data['version']."\n";
|
$this->data['version']."\n";
|
||||||
}
|
}
|
||||||
$this->changed= $commited;
|
$this->changed= $commited;
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ class MindProject extends VersionManager{
|
|||||||
Mind::$lexer= new Lexer();
|
Mind::$lexer= new Lexer();
|
||||||
self::loadSources();
|
self::loadSources();
|
||||||
}
|
}
|
||||||
public static function analyze($autoCommit=false)
|
public static function analyze($autoCommit=false, $echo=true)
|
||||||
{
|
{
|
||||||
self::setUp();
|
self::setUp();
|
||||||
$init= false;
|
$init= false;
|
||||||
@@ -183,18 +183,20 @@ class MindProject extends VersionManager{
|
|||||||
|
|
||||||
MindTimer::end();
|
MindTimer::end();
|
||||||
|
|
||||||
if($init)
|
if($echo)
|
||||||
echo Analyst::printWhatYouGet();
|
{
|
||||||
else
|
if($init)
|
||||||
echo " Nothing to show\n";
|
echo Analyst::printWhatYouGet();
|
||||||
echo "--------------------\n";
|
else
|
||||||
echo "Time: ".
|
echo " Nothing to show\n";
|
||||||
MindTimer::getElapsedTime().
|
echo "--------------------\n";
|
||||||
"s\n";
|
echo "Time: ".
|
||||||
$memory= ((memory_get_usage() / 1024)/1024);
|
MindTimer::getElapsedTime().
|
||||||
$memory= number_format($memory, 2);
|
"s\n";
|
||||||
echo "Memory: ".$memory."MBs\n";
|
$memory= ((memory_get_usage() / 1024)/1024);
|
||||||
|
$memory= number_format($memory, 2);
|
||||||
|
echo "Memory: ".$memory."MBs\n";
|
||||||
|
}
|
||||||
self::cleanUp();
|
self::cleanUp();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
<?php
|
||||||
|
use Symfony\Component\Console\Input\InputArgument,
|
||||||
|
Symfony\Component\Console\Input\InputOption,
|
||||||
|
Symfony\Component\Console;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class represents the program auth, receiving the user and
|
||||||
|
* may also receive the password. It will start your session
|
||||||
|
* allowing you to run the restricted programs
|
||||||
|
*
|
||||||
|
* @author Felipe Nascimento de Moura <felipenmoura@gmail.com>
|
||||||
|
*/
|
||||||
|
class Commit extends MindCommand implements program
|
||||||
|
{
|
||||||
|
private $nameSpace= false;
|
||||||
|
public $autoCommit= false;
|
||||||
|
|
||||||
|
public function configure()
|
||||||
|
{
|
||||||
|
$this->setName('commit')
|
||||||
|
->setDescription('Commits the analyzed content to a new version')
|
||||||
|
->setRestrict(true)
|
||||||
|
->setHelp(<<<EOT
|
||||||
|
This command will increase the current version and also will persist the currently analyzed structure into the system's knowledge base.
|
||||||
|
EOT
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function execute(Console\Input\InputInterface $input,
|
||||||
|
Console\Output\OutputInterface $output)
|
||||||
|
{
|
||||||
|
if(!parent::execute($input, $output))
|
||||||
|
return false;
|
||||||
|
Mind::write('thinking');
|
||||||
|
$this->runAction();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function HTTPExecute()
|
||||||
|
{
|
||||||
|
GLOBAL $_REQ;
|
||||||
|
if(!parent::HTTPExecute())
|
||||||
|
return false;
|
||||||
|
$this->runAction();
|
||||||
|
}
|
||||||
|
|
||||||
|
private function action()
|
||||||
|
{
|
||||||
|
if(!isset($_SESSION['currentProject']))
|
||||||
|
{
|
||||||
|
Mind::write('currentProjectRequired');
|
||||||
|
Mind::write('currentProjectRequiredTip');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
MindProject::analyze(true, false);
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function runAction()
|
||||||
|
{
|
||||||
|
$ret= $this->action();
|
||||||
|
parent::runAction();
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -21,6 +21,7 @@
|
|||||||
EOT
|
EOT
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function execute(Console\Input\InputInterface $input, Console\Output\OutputInterface $output)
|
public function execute(Console\Input\InputInterface $input, Console\Output\OutputInterface $output)
|
||||||
{
|
{
|
||||||
if(!parent::execute($input, $output))
|
if(!parent::execute($input, $output))
|
||||||
|
|||||||
@@ -40,6 +40,7 @@
|
|||||||
new Quit(),
|
new Quit(),
|
||||||
new Auth(),
|
new Auth(),
|
||||||
new Clear(),
|
new Clear(),
|
||||||
|
new Commit(),
|
||||||
new Info(),
|
new Info(),
|
||||||
new Create(),
|
new Create(),
|
||||||
new Show(),
|
new Show(),
|
||||||
|
|||||||
externo
+12
-1
@@ -16,7 +16,18 @@ abstract class WinSetup extends Setup{
|
|||||||
*/
|
*/
|
||||||
public function createExecFile()
|
public function createExecFile()
|
||||||
{
|
{
|
||||||
self::$content= '';
|
// inspired on Doctrine bat for windows
|
||||||
|
self::$content= <<<BAT
|
||||||
|
@echo off
|
||||||
|
|
||||||
|
if "%PHPBIN%" == "" set PHPBIN=@php_bin@
|
||||||
|
if not exist "%PHPBIN%" if "%PHP_PEAR_PHP_BIN%" neq "" goto USE_PEAR_PATH
|
||||||
|
GOTO RUN
|
||||||
|
:USE_PEAR_PATH
|
||||||
|
set PHPBIN=%PHP_PEAR_PHP_BIN%
|
||||||
|
:RUN
|
||||||
|
"%PHPBIN%" "@bin_dir@\mind" %*
|
||||||
|
BAT;
|
||||||
// TODO: any good soul to help with it?
|
// TODO: any good soul to help with it?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Referência em uma Nova Issue
Bloquear um usuário