Skip to content

Commit

Permalink
fixed multiple dimension query bug
Browse files Browse the repository at this point in the history
  • Loading branch information
mr-ma committed Aug 8, 2017
1 parent 4ce4f2d commit e59865b
Show file tree
Hide file tree
Showing 10 changed files with 128 additions and 274 deletions.
6 changes: 6 additions & 0 deletions config.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package main

type Config struct {
Foo string
Bar int
}
22 changes: 15 additions & 7 deletions data/classification-driver.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package data
import (
"fmt"
//overriding MySqlDriver
_ "github.com/go-sql-driver/mysql"
"github.com/mr-ma/paper-review-go/model"
Expand All @@ -15,8 +16,8 @@ type ClassificationDriver interface {


//InitMySQLDriver initialize a new my sql driver instance
func InitClassificationDriver() ClassificationDriver {
return MySQLDriver{username: "root", pass: "P$m7d2", database: "classification"}
func InitClassificationDriver(user string, password string) ClassificationDriver {
return MySQLDriver{username: user, pass: password, database: "classification"}
}

//ExportCorrelations export correlations with the given attributes
Expand All @@ -25,16 +26,23 @@ func (d MySQLDriver) ExportCorrelations(filterAttributes []model.Attribute,
db, err := d.OpenDB()
checkErr(err)
//prepare list of attribute ids for the where clause
attributeStr := "%"
queryStr := ""
parameters := []interface{}{taxonomyId}
for _, attribute := range filterAttributes {
attributeStr+=attribute.Text+",%"
queryStr+=" and atts REGEXP ?"
parameters = append(parameters,attribute.Text)
}
db, stmt, err := d.Query(`select id_paper, citation, bib,atts
queryStr+=";"
queryStr = `select id_paper, citation, bib,atts
from paper_merged_attributes
where id_taxonomy=? and atts like ?;`)
where id_taxonomy=?`+queryStr
fmt.Println(queryStr)
fmt.Println(parameters...)
fmt.Println(len(parameters))
db, stmt, err := d.Query(queryStr)
defer stmt.Close()
defer db.Close()
rows, err := stmt.Query(taxonomyId,attributeStr)
rows, err := stmt.Query(parameters...)
checkErr(err)
for rows.Next() {
a := model.Paper{}
Expand Down
2 changes: 1 addition & 1 deletion data/driver-core.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ type MySQLDriver struct {
func (d MySQLDriver) OpenDB() (*sql.DB, error) {
db, err := sql.Open("mysql", d.username+":"+d.pass+"@/"+d.database)
if err != nil {
panic(err.Error()) // Just for example purpose. You should use proper error handling instead of panic
checkErr(err)// Just for example purpose. You should use proper error handling instead of panic
}
return db, err
}
Expand Down
52 changes: 17 additions & 35 deletions data/driver_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,17 @@ import (
"github.com/stretchr/testify/assert"
)

var db = InitMySQLDriver("root","P$m7d2")
func TestInitMySQLDriver(t *testing.T) {
db := InitMySQLDriver()
assert.NotNil(t, db)
}

func TestOpenDB(t *testing.T) {
db := InitMySQLDriver()
_, err := db.OpenDB()
assert.Nil(t, err)
}
func TestQuery(t *testing.T) {
//TODO: fix this
db := InitMySQLDriver()
d, stmt, err := db.Query("select Id from mitarbeiters where Nme like ?")
defer stmt.Close()
defer d.Close()
Expand All @@ -38,112 +36,96 @@ func TestInsertResearch(t *testing.T) {
re := model.Research{Questions: "test1", ReviewTemplate: "wrtie whatever", Title: "ola"}
articles := []model.Article{model.Article{Title: "title", Authors: "author", File: "file", Source: "source"}}
re.Articles = articles
d := InitMySQLDriver()
a, _, err := d.InsertResearch(re)
a, _, err := db.InsertResearch(re)
assert.Nil(t, err)
assert.True(t, a > 0)
}
func TestInsertVote(t *testing.T) {
vote := model.Vote{State: model.YES, Voter: model.Mitarbeiter{ID: 1, Name: "Mohsen"},
AssociatedArticleID: 1,
Tags: []model.Tag{model.Tag{ID: 1, Text: "test1", ResearchID: 6}, model.Tag{ID: 2, Text: "test2"}}}
d := InitMySQLDriver()
a, _, err := d.InsertVote(vote)
a, _, err := db.InsertVote(vote)
assert.Nil(t, err)
assert.True(t, a > 0)
}
func TestInsertMitarbeiter(t *testing.T) {
m := model.Mitarbeiter{Name: "test mitarbeiter", PassHash: ""}
d := InitMySQLDriver()
a, _, err := d.InsertMitarbeiter(m)
a, _, err := db.InsertMitarbeiter(m)
assert.Nil(t, err)
assert.True(t, a > 0)
}
func TestSelectResearchWithArticles(t *testing.T) {
d := InitMySQLDriver()
re, err := d.SelectResearchWithArticles(4)
re, err := db.SelectResearchWithArticles(4)
assert.NotZero(t, re.ID)
assert.Nil(t, err)
assert.True(t, len(re.Articles) > 0)
assert.NotEmpty(t, re.Questions)
}
func TestSelectAllResearchWithArticles(t *testing.T) {
d := InitMySQLDriver()
re, err := d.SelectAllResearchWithArticles()
re, err := db.SelectAllResearchWithArticles()
assert.NotZero(t, len(re))
assert.Nil(t, err)
}
func TestSelectVote(t *testing.T) {
d := InitMySQLDriver()
re, err := d.SelectVote(44)
re, err := db.SelectVote(44)
assert.NotZero(t, re.ID)
assert.Nil(t, err)
assert.True(t, len(re.Tags) > 0)
assert.NotZero(t, re.Voter.ID)
}
func TestSelectAllVotes(t *testing.T) {
d := InitMySQLDriver()
re, err := d.SelectAllVotes()
re, err := db.SelectAllVotes()
assert.NotZero(t, len(re))
assert.Nil(t, err)
}
func TestSelectResearchVotes(t *testing.T) {
d := InitMySQLDriver()
re, err := d.SelectResearchVotes(4)
re, err := db.SelectResearchVotes(4)
assert.NotZero(t, len(re))
for _, v := range re {
assert.NotZero(t, v.AssociatedArticleID)
}
assert.Nil(t, err)
}
func TestReviewPapers(t *testing.T) {
d := InitMySQLDriver()
a, _, err := d.ReviewPapers(6, 1)
a, _, err := db.ReviewPapers(6, 1)
assert.NotZero(t, len(a))
assert.True(t, len(a) == 2)
assert.Nil(t, err)
}
func TestReviewNumPapers(t *testing.T) {
d := InitMySQLDriver()
a, _, err := d.ReviewNumPapers(6, 1, 1)
a, _, err := db.ReviewNumPapers(6, 1, 1)
assert.NotZero(t, len(a))
//assert.NotEmpty(t, re.Questions)
assert.True(t, len(a) == 1)
assert.Nil(t, err)
}
func TestSelectMitarbeiter(t *testing.T) {
d := InitMySQLDriver()
m, err := d.SelectMitarbeiter(1)
m, err := db.SelectMitarbeiter(1)
assert.Nil(t, err)
assert.NotZero(t, m.ID)
}
func TestSelectAllMitarbeiters(t *testing.T) {
d := InitMySQLDriver()
m, err := d.SelectAllMitarbeiters()
m, err := db.SelectAllMitarbeiters()
assert.Nil(t, err)
assert.NotZero(t, len(m))
}
func TestSelectAllTags(t *testing.T) {
d := InitMySQLDriver()
tags, err := d.SelectAllTags(4)
tags, err := db.SelectAllTags(4)
assert.Nil(t, err)
assert.NotZero(t, len(tags))
}
func TestGetResearchStats(t *testing.T) {
d := InitMySQLDriver()
stats, err := d.GetResearchStats(4)
stats, err := db.GetResearchStats(4)
assert.Nil(t, err)
assert.NotZero(t, len(stats))
}
func TestGetResearchStatsPerMitarbeiter(t *testing.T) {
d := InitMySQLDriver()
stat, err := d.GetResearchStatsPerMitarbeiter(4, 1)
stat, err := db.GetResearchStatsPerMitarbeiter(4, 1)
assert.Nil(t, err)
assert.NotZero(t, stat.MitarbeiterID)
}
func TestGetApprovedPapers(t *testing.T) {
d := InitMySQLDriver()
atricles, err := d.GetApprovedPapers(4, 2)
atricles, err := db.GetApprovedPapers(4, 2)
assert.Nil(t, err)
assert.NotZero(t, len(atricles))
}
4 changes: 2 additions & 2 deletions data/paper-review-driver.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ type PaperReviewDriver interface {


//InitMySQLDriver initialize a new my sql driver instance
func InitMySQLDriver() PaperReviewDriver {
return MySQLDriver{username: "root", pass: "P$m7d2", database: "paper_review"}
func InitMySQLDriver(user string, password string) PaperReviewDriver {
return MySQLDriver{username: user, pass: password, database: "paper_review"}
}


Expand Down
6 changes: 5 additions & 1 deletion Dockerfile → docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ ENV GOPATH=$HOME/work
ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin

RUN go get github.com/rcrowley/go-tigertonic
RUN github.com/go-sql-driver/mysql
RUN go get github.com/go-sql-driver/mysql
RUN go get github.com/mr-ma/paper-review-go


# clone paper review
WORKDIR /$HOME/work/src/github
Expand All @@ -17,3 +19,5 @@ RUN git clone https://github.com/mr-ma/paper-review-go.git
WORKDIR /$HOME/work/src/mr-ma/paper-review-go

RUN go build
EXPOSE 8001
CMD "./paper-review-go"
8 changes: 8 additions & 0 deletions docker/READ.ME
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#Build an image from the docker file
docker build -t image-name .

#Export port to the host (credits to https://github.com/wsargent/docker-cheat-sheet#exposing-ports)
docker run -p 127.0.0.1:8001:8001 --name CONTAINER -t image-name

#To expose the container's port on your localhost's port:
iptables -t nat -A DOCKER -p tcp --dport <LOCALHOSTPORT> -j DNAT --to-destination <CONTAINERIP>:<PORT>
22 changes: 16 additions & 6 deletions frontend/taxonomy/index.html
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<title>Taxonomy of Integrity Protection Techniques</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
Expand Down Expand Up @@ -63,6 +63,16 @@
});

});
function dumpBibCitation(citation){
cit = JSON.parse(citation)
strBody=""
for (var key in cit) {
if (key != "ENTRYTYPE" && key!="ID")
strBody += key +"={"+cit[key]+"},\n";
}
dump = "@"+cit["ENTRYTYPE"]+"{"+cit["ID"]+",\n"+strBody+"}";
return dump;
}
function addDimension(){
event.preventDefault(); // stop default behaviour of submit button
// value of input
Expand Down Expand Up @@ -106,17 +116,17 @@
for (var i in data.response){
var paper = data.response[i];
var id = paper.id;
var citation = paper.citation;
var attributes = paper.str_attributes;
var bib = paper.bib;
var tr = "<tr>\
<td>" +count+
"</td>\
"+
//<td>" +id+
//"</td>\
"<td><pre> " +citation+
"</pre></td>\
<td><code>" +bib+
"<td> <p class=\"text-info\">" +attributes+
"</p></td>\
<td><code>" +dumpBibCitation(bib)+
"</code></td>\
</tr>";
count++;
Expand Down Expand Up @@ -195,7 +205,7 @@ <h3>Software integrity protection taxonomy correlation generator</h3>
<tr>
<th>#</th>
<!-- <th>PaperId</th> -->
<th>Citation</th>
<th>Attributes</th>
<th>Bib</th>
</tr>
</thead>
Expand Down
Binary file modified paper-review-go
Binary file not shown.
Loading

0 comments on commit e59865b

Please sign in to comment.