Skip to content

Εργασία εξαμήνου για το μάθημα διαδίκτυο και εφαρμογές ακαδ. έτος 2019-2020

Notifications You must be signed in to change notification settings

ndikaros/internet_applications

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

internet_applications

Εργασία εξαμήνου για το μάθημα διαδίκτυο και εφαρμογές ακαδ. έτος 2019-2020

Εισαγωγή Άρθρων σε μία Σχεσιακή Βάση. Τα δεδομένα που θα χρησιμοποιηθούν είναι από την ιστοσελίδα https://www.semanticscholar.org/cord19 και θα εισαχθούν οι συνοπτικές και αναλυτικές πληροφορίες που τα αφορούν.

Θα δημιουργηθεί μια Desktop εφαρμογή χωρίς γραφικό περιβάλλον η οποία θα εισάγει τα δεδομένα που υπάρχουν για κάθε άρθρο σε μία σχεσιακή βάση. θα δημιουργηθεί το σχήμα της βάσης το οποίο θα αποτυπωθεί και σε αντίστοιχο ER διάγραμμα καθώς και το πρόγραμμα που διαβάζει τα δεδομένα από τα αρχεία και τα βάζει σε αυτήν. Θα υλοποιηθεί και μια συνοπτική παρουσίαση των δεδομένων που εισήχθησαν στη βάση (π.χ., χρονική περίοδος στην οποία ανήκουν όλα τα άρθρα, ποσοστό άρθρων με το πλήρες κείμενο, κτλ.). Θα υλοποιηθούν ενδεχομένως και κάποιες άλλες λειτουργικότητες, πχ restful api αν υπάρξει ο κατάλληλος χρόνος. Η υλοποίηση θα γίνει με τεχνολογίες τύπου nodejs/npm. Η βάση δεδομένων που θα επιλεγεί θα είναι κατά πάσα πιθανότητα η sqlite (εναλλακτικά postgress ή mysql). Για την επικοινωνία με τη βάση θα χρησιμοποιηθεί το ORM sequelize.

Οδηγίες χρήσεως

Η εργασία αποτελείται από 2 projects. To πρώτο, που αφορά την εισαγωγή των δεδομένων από τα αρχεία σε μία σχεσιακή βάση δεδομένων, είναι γραμμένο σε javascript ( node.js και με χρήση του package manager npm) βρίσκεται μέσα στο φάκελο covid04. Η βάση δεδομένων που είναι σε sqlite βρίσκεται μέσα στο φάκελο db και στο αρχείο sci_paper.sqlite Τα αρχεία των δεδομένων βρίσκονται στον φάκελο sample_files. Για τις ανάγκες ελέγχου της εργασίας χρησιμοποιήθηκε ένα δείγμα των αρχικών δεδομένων που αποτελείται από 10 papers. Ήτοι 10 εγγραφές στο αρχείο Book1.csv και 10 json αρχεία μέσα στο φάκελο sample_files/document_parses/pdf_json Για να τρέξουμε το project πρέπει να έχουμε node/npm εγκατεστημένο στον υπολογιστή, και να τοποθετήσουμε τους τρεις αυτούς φακέλους στην ίδια σχετική μεταξύ τους θέση στο file system ( δηλαδή και οι τρεις να είναι στο ίδιο level). Κατόπιν μέσω της γραμμής εντολών μπαίνουμε στον φάκελο covid-04 και τρέχουμε node .

Το πρόγραμμα θα εισάγει τα papers που βρίσκονται στα sample_files στη βάση δεδομένων. Για να δούμε τα περιεχόμενα της βάσης δεδομένων μπορούμε να χρησιμοποιήσουμε τον desktop client https://sqlitebrowser.org/

Επειδή η βάση περιέχει ήδη μέσα αυτά τα δεδομένα, αν θέλουμε προηγουμένως να την αδειάσουμε μπορούμε να τρέξουμε στο sql window του sqlitebrowser τις εντολές :

 delete from authors;
 delete from abstracts;
 delete from texts;
 delete from bib_entries;
 delete from ref_entries;
 delete from sqlite_sequence

Σε περίπτωση που κάνουμε κάποια τροποποίηση του σχήματος της βάσης δεδομένων μέσω των μοντέλων του sequelize και θέλουμε να εφαρμοστούν οι αλλαγές αυτές στη βάση , τότε αρχικά πρέπει να διαγράψουμε τον εν λόγω πίνακα από τη βάση δεδομένων με τη χρήση του sqlitebrowser και μετά να τρέξουμε το project αφού έχουμε κάνει uncomment τις γραμμές 30-37 στο αρχείο index.js

.sync()
.then(result => {
    console.log(result);
})
.catch(err => {
    console.log(err);
});  

Αφού τρέξει το πρόγραμμα και επιβεβαιώσουμε μέσω του sqlitebrowser πως οι αλλαγές του σχήματος έχουν λάβει χώρα, τότε κάνουμε πάλι comment τις γραμμές αυτές και τρέχουμε το project για να εισαχθούν τα δεδομένα στη βάση.

Το 2ο project της εργασίας είναι γραμμένο σε java, βρίσκεται στο φάκελο covid04_api και με χρήση της τεχνολογίας servlet προσφέρει ένα restful api της βάσης δεδομένων που δημιουργήθηκε.

Το προτζεκτ δημιουργήθηκε στο eclipse IDE και τρέχει σε Apache Tomcat έκδοση 8. Χρησιμοποιεί την βιβλιοθήκη servlet-api.jar ως referenced libary, συνεπώς όταν ανοίξουμε το προτζεκτ με το eclipse πρέπει να ορίσουμε από που διαβάζει τη συγκεκριμένη βιβλιοθήκη στα properties του project, η οποία συνήθως βρίσκεται στο φάκελο lib του Tomcat installation που έχουμε στον Υπολογιστή μας.

Οι άλλες δύο βιβλιοθήκες που χρησιμοποιήθηκαν είναι ο sqlite jdbc driver και μία βιβλιοθήκη για το χειρισμό JSON αρχείων, οι οποίες βρίσκονται μέσα στο φάκελο lib του προτζεκτ και δεν χρειάζεται να τις επανακαθορίσουμε.

Για να διαβάζει το προτζετ τη βάση δεδομένων πρέπει στο αρχείο Connect.java να ορίσουμε το απόλυτο path στο οποίο βρίσκεται το αρχείο της βάσης δεδομένων ( εκεί δηλαδή όπου θα το έχουμε τοποθετήσει κατεβάζοντας το από το repository) στην ακόλουθη γραμμή του αρχείου

String url = "jdbc:sqlite:C:\\xxx\\....\\yyy\\sci_paper.sqlite";

Αφού κάνουμε την αλλαγή αυτή και κάνουμε deploy το project στον Tomcat,

ανοίγουμε έναν browser στο url

http://localhost:8080/covid04_api/

και αν όλα έχουν γίνει σωστά, θα δούμε την φόρμα που δημιουργήθηκε η οποία αποτελείται από ένα πεδίο κειμένου στο οποίο μπορούμε να γράψουμε ένα ερώτημα σε γλώσσα sql πάνω στη βάση δεδομένων

π.χ select * from abstracts where paperId = 1 ή select * from authors where first like 'J%'

( προυποτίθεται οτι γνωρίζουμε το σχήμα της) και πατώντας το κουμπί submit, το αποτέλεσμα του query επιστρέφεται από το servlet σε μορφή json στον browser. Αν το query δεν είναι σωστά διατυπωμένο θα εμφανιστεί κατάλληλο μήνυμα λάθους

youtube link:

https://www.youtube.com/watch?v=6NxmJLsvP4M&feature=youtu.be

About

Εργασία εξαμήνου για το μάθημα διαδίκτυο και εφαρμογές ακαδ. έτος 2019-2020

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published