Ignore:
Timestamp:
12/02/11 15:26:01 (13 years ago)
Author:
jkraaijeveld
Message:

Iteration of refactoring in the Connector code.

  • Abstracted load() and save() to a new superclass Connector. Every connector extends Connector.
  • Query arguments are now correctly created by Connector's createArguments() function, removing redundant if/if/if statements in every get() function.
  • Every sidefunction which previously used a seperate query to get data now uses the RAP findRegex method, should increase performance.
  • Question arguments have been changed slightly: 'uid' is now 'code' and 'answers' is now 'definedanswers' to avoid confusion.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Dev/trunk/classes/AnswerSetConnector.php

    r158 r171  
    66 * @author jkraaijeveld
    77 */
    8 class AnswerSetConnector implements IConnector{
    9     protected $model;
    10     protected $fileName = 'data/answers/answersets.rdf';
     8class AnswerSetConnector extends Connector{
    119    protected $db;
    1210
     
    1614        public function __construct()
    1715        {
     16                $this->fileName = 'data/answers/answersets.rdf';
    1817                //Ensure the required folder for this connector exists
    1918                if(!is_dir('data/answers'))
    2019                        mkdir('data/answers');
    21         }
    22 
    23         /**
    24          * function load()
    25          * Loads the file into the standard MemModel
    26          */
    27         public function load()
    28         {
    29             //Get the Memory Model from the ModelFactory
    30         $this->model = ModelFactory::getDefaultModel();
    31        
    32         //Ensure the required file exists before loading
    33         if(file_exists($this->fileName))
    34             $this->model->load($this->fileName);
    35         }
    36 
    37         /**
    38      * function save()
    39      * Saves the MemModel into the given file.
    40      */
    41     public function save() {
    42         $this->model->saveAs($this->fileName,'rdf');
    4320        }
    4421
     
    5128        {
    5229                $this->load();
    53                
    54                 $keys = array_keys($arguments);
    55                 $uid = ""; $survey = ""; $respondent = ""; $answers = "";
    56                 if(in_array("uid", $keys))
    57                         $uid = 'predicates:uid \''.$arguments["uid"].'\' ';
    58                 if(in_array("survey", $keys))
    59                         $survey = 'predicates:for_survey \''.$arguments["survey"].'\' ';
    60                 if(in_array("respondent", $keys))
    61                         $respondent = 'predicates:by_respondent \''.$arguments["respondent"].'\' ';
    62                 if(in_array("answers", $keys))
    63                 {
    64                         foreach ($arguments["answers"] as $answer)
    65                         {
    66                                 $answers = $answers . 'predicates:given_answer \'' . $answer . '\' ';
    67                         }
    68                 }
    6930
    7031                //Build the query string
     
    7940                                predicates:for_survey ?for_survey ;
    8041                                predicates:by_respondent ?by_respondent ;
    81                                 ' . $uid . $survey . $respondent . $answers . '
     42                                ' . $this->createArguments($arguments) . '
    8243                        }';
    83 
    8444                //Query the model
    8545                $results = $this->model->sparqlQuery($querystring);
     
    10565        private function getAnswers($uid)
    10666        {
    107                 $querystring = '
    108                         PREFIX predicates: <' . SURVEYTOOL_PREDICATES_NAMESPACE .'>
    109                         PREFIX resources: <' . SURVEYTOOL_RESOURCES_NAMESPACE .'>
    110                         SELECT DISTINCT ?given_answer
    111                         WHERE
    112                         {
    113                                 _answerset predicates:resource_type resources:answerset ;
    114                                 predicates:given_answer ?given_answer ;
    115                                 predicates:uid \'' . $uid . '\'
    116                         }';
    117                 $answers = $this->model->sparqlQuery($querystring);
    118                 $returnArray = array();
    119                 if(!empty($answers))
     67                $result = $this->model->findRegex("[(".$uid.")]", "[(given_answer)]", null);
     68                $iterator = $result->getStatementIterator();
     69                $answers = array();
     70                while($iterator->hasNext())
    12071                {
    121                         foreach($answers as $answer)
    122                         {
    123                                 $answerR = $this->db->get("answer", array("uid" => $answer["?given_answer"]->label));
    124                                 $returnArray[] = $answerR[0];
    125                         }
     72                        $element = $iterator->next();
     73                        $answersR = $this->db->get("answer", array("uid" => $element->getLabelObject()));
     74                        $answers[] = $answersR[0];
    12675                }
    127                 return $returnArray;
     76                return $answers;
    12877        }
    12978
Note: See TracChangeset for help on using the changeset viewer.