Commit 2edbe1bf authored by Riegel's avatar Riegel
Browse files

Build: Remove CityDoctorWebService module

parent 04387e46
$(document).ready(function () {
$('#loginForm').submit(function (e) {
$("#invalid").slideUp();
var form = $(this);
var url = 'rest/login';
e.preventDefault();
$.ajax({
method : 'POST',
url : url,
data : form.serialize(),
success : function (response) {
window.localStorage.setItem('token', response.token);
document.location.href = 'models.html';
},
complete : function (xhr, status) {
if (xhr.status == 403) {
$("#invalid").slideDown();
} else if (xhr.status == 500) {
document.location.href = 'internal_server_error.html';
}
}
});
});
// $(".alert").find(".close").on("click", function (e) {
// // Find all elements with the "alert" class, get all descendant elements with the class "close", and bind a "click" event handler
// e.stopPropagation(); // Don't allow the click to bubble up the DOM
// e.preventDefault(); // Don't let any default functionality occur (in case it's a link)
// $(this).closest(".alert").slideUp(400); // Hide this specific Alert
// });
});
function login() {
alert("hello world")
}
\ No newline at end of file
@-webkit-keyframes passing-through{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%, 70%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}100%{opacity:0;-webkit-transform:translateY(-40px);-moz-transform:translateY(-40px);-ms-transform:translateY(-40px);-o-transform:translateY(-40px);transform:translateY(-40px)}}@-moz-keyframes passing-through{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%, 70%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}100%{opacity:0;-webkit-transform:translateY(-40px);-moz-transform:translateY(-40px);-ms-transform:translateY(-40px);-o-transform:translateY(-40px);transform:translateY(-40px)}}@keyframes passing-through{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%, 70%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}100%{opacity:0;-webkit-transform:translateY(-40px);-moz-transform:translateY(-40px);-ms-transform:translateY(-40px);-o-transform:translateY(-40px);transform:translateY(-40px)}}@-webkit-keyframes slide-in{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}}@-moz-keyframes slide-in{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}}@keyframes slide-in{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}}@-webkit-keyframes pulse{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}10%{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}20%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}@-moz-keyframes pulse{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}10%{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}20%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}@keyframes pulse{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}10%{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}20%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}.dropzone,.dropzone *{box-sizing:border-box}.dropzone{min-height:150px;border:2px solid rgba(0,0,0,0.3);background:white;padding:20px 20px}.dropzone.dz-clickable{cursor:pointer}.dropzone.dz-clickable *{cursor:default}.dropzone.dz-clickable .dz-message,.dropzone.dz-clickable .dz-message *{cursor:pointer}.dropzone.dz-started .dz-message{display:none}.dropzone.dz-drag-hover{border-style:solid}.dropzone.dz-drag-hover .dz-message{opacity:0.5}.dropzone .dz-message{text-align:center;margin:2em 0}.dropzone .dz-preview{position:relative;display:inline-block;vertical-align:top;margin:16px;min-height:100px}.dropzone .dz-preview:hover{z-index:1000}.dropzone .dz-preview:hover .dz-details{opacity:1}.dropzone .dz-preview.dz-file-preview .dz-image{border-radius:20px;background:#999;background:linear-gradient(to bottom, #eee, #ddd)}.dropzone .dz-preview.dz-file-preview .dz-details{opacity:1}.dropzone .dz-preview.dz-image-preview{background:white}.dropzone .dz-preview.dz-image-preview .dz-details{-webkit-transition:opacity 0.2s linear;-moz-transition:opacity 0.2s linear;-ms-transition:opacity 0.2s linear;-o-transition:opacity 0.2s linear;transition:opacity 0.2s linear}.dropzone .dz-preview .dz-remove{font-size:14px;text-align:center;display:block;cursor:pointer;border:none}.dropzone .dz-preview .dz-remove:hover{text-decoration:underline}.dropzone .dz-preview:hover .dz-details{opacity:1}.dropzone .dz-preview .dz-details{z-index:20;position:absolute;top:0;left:0;opacity:0;font-size:13px;min-width:100%;max-width:100%;padding:2em 1em;text-align:center;color:rgba(0,0,0,0.9);line-height:150%}.dropzone .dz-preview .dz-details .dz-size{margin-bottom:1em;font-size:16px}.dropzone .dz-preview .dz-details .dz-filename{white-space:nowrap}.dropzone .dz-preview .dz-details .dz-filename:hover span{border:1px solid rgba(200,200,200,0.8);background-color:rgba(255,255,255,0.8)}.dropzone .dz-preview .dz-details .dz-filename:not(:hover){overflow:hidden;text-overflow:ellipsis}.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span{border:1px solid transparent}.dropzone .dz-preview .dz-details .dz-filename span,.dropzone .dz-preview .dz-details .dz-size span{background-color:rgba(255,255,255,0.4);padding:0 0.4em;border-radius:3px}.dropzone .dz-preview:hover .dz-image img{-webkit-transform:scale(1.05, 1.05);-moz-transform:scale(1.05, 1.05);-ms-transform:scale(1.05, 1.05);-o-transform:scale(1.05, 1.05);transform:scale(1.05, 1.05);-webkit-filter:blur(8px);filter:blur(8px)}.dropzone .dz-preview .dz-image{border-radius:20px;overflow:hidden;width:120px;height:120px;position:relative;display:block;z-index:10}.dropzone .dz-preview .dz-image img{display:block}.dropzone .dz-preview.dz-success .dz-success-mark{-webkit-animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);-moz-animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);-ms-animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);-o-animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1)}.dropzone .dz-preview.dz-error .dz-error-mark{opacity:1;-webkit-animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);-moz-animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);-ms-animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);-o-animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1)}.dropzone .dz-preview .dz-success-mark,.dropzone .dz-preview .dz-error-mark{pointer-events:none;opacity:0;z-index:500;position:absolute;display:block;top:50%;left:50%;margin-left:-27px;margin-top:-27px}.dropzone .dz-preview .dz-success-mark svg,.dropzone .dz-preview .dz-error-mark svg{display:block;width:54px;height:54px}.dropzone .dz-preview.dz-processing .dz-progress{opacity:1;-webkit-transition:all 0.2s linear;-moz-transition:all 0.2s linear;-ms-transition:all 0.2s linear;-o-transition:all 0.2s linear;transition:all 0.2s linear}.dropzone .dz-preview.dz-complete .dz-progress{opacity:0;-webkit-transition:opacity 0.4s ease-in;-moz-transition:opacity 0.4s ease-in;-ms-transition:opacity 0.4s ease-in;-o-transition:opacity 0.4s ease-in;transition:opacity 0.4s ease-in}.dropzone .dz-preview:not(.dz-processing) .dz-progress{-webkit-animation:pulse 6s ease infinite;-moz-animation:pulse 6s ease infinite;-ms-animation:pulse 6s ease infinite;-o-animation:pulse 6s ease infinite;animation:pulse 6s ease infinite}.dropzone .dz-preview .dz-progress{opacity:1;z-index:1000;pointer-events:none;position:absolute;height:16px;left:50%;top:50%;margin-top:-8px;width:80px;margin-left:-40px;background:rgba(255,255,255,0.9);-webkit-transform:scale(1);border-radius:8px;overflow:hidden}.dropzone .dz-preview .dz-progress .dz-upload{background:#333;background:linear-gradient(to bottom, #666, #444);position:absolute;top:0;left:0;bottom:0;width:0;-webkit-transition:width 300ms ease-in-out;-moz-transition:width 300ms ease-in-out;-ms-transition:width 300ms ease-in-out;-o-transition:width 300ms ease-in-out;transition:width 300ms ease-in-out}.dropzone .dz-preview.dz-error .dz-error-message{display:block}.dropzone .dz-preview.dz-error:hover .dz-error-message{opacity:1;pointer-events:auto}.dropzone .dz-preview .dz-error-message{pointer-events:none;z-index:1000;position:absolute;display:block;display:none;opacity:0;-webkit-transition:opacity 0.3s ease;-moz-transition:opacity 0.3s ease;-ms-transition:opacity 0.3s ease;-o-transition:opacity 0.3s ease;transition:opacity 0.3s ease;border-radius:8px;font-size:13px;top:130px;left:-10px;width:140px;background:#be2626;background:linear-gradient(to bottom, #be2626, #a92222);padding:0.5em 1.2em;color:white}.dropzone .dz-preview .dz-error-message:after{content:'';position:absolute;top:-6px;left:64px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #be2626}
@charset "utf-8";
html, body {
height: 100%;
}
.fill {
height: 100%;
}
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="bootstrap.min.css">
<link rel="stylesheet" href="index.css">
<title>CityDoctor 3</title>
</head>
<body>
<div class="container-fluid fill">
<div class="row justify-content-center">
<img alt="CityDoctor-Logo" src="cd_logo.png" class="img-fluid">
</div>
<form id="loginForm" action="rest/login" method="post">
<div class="form-group row justify-content-center">
<label for="username" class="col-md-1 col-form-label">E-Mail:</label>
<div class="col-md-3">
<input type="text" class="form-control" id="username" required
name="username" placeholder="E-Mail">
</div>
</div>
<div class="form-group row justify-content-center">
<label for="password" class="col-md-1 col-form-label">Password:</label>
<div class="col-md-3">
<input type="password" class="form-control" id="password" required
name="password" placeholder="Password">
</div>
</div>
<div class="row justify-content-center">
<div id="invalid" class="col-md-4 alert alert-danger"
style="display: none;">
<strong>Error!</strong> Invalid username/password. <a class="close"
onclick="$('.alert').slideUp()">×</a>
</div>
</div>
<div class="row justify-content-center">
<button type="button" class="btn btn-link">Register</button>
</div>
<div class="form-group row justify-content-center">
<button type="submit" class="btn btn-primary">Log in</button>
</div>
</form>
<div class="row justify-content-center">
<div class="col-md-2">
<img alt="Hochschule für Technik Stuttgart" src="hft_logo.png"
class="text-center"
style="width: auto; height: auto; max-width: 150px;">
</div>
<div class="col-md-2">
<img alt="Bundesministerium für Bildung und Forschung"
src="BMBF_Logo.png" class="text-center"
style="width: auto; height: auto; max-width: 150px;">
</div>
<div class="col-md-2">
<img alt="Beuth Hochschule für Technik Berlin"
src="Beuth-Logo_basis.png" class="text-center"
style="width: auto; height: auto; max-width: 150px;">
</div>
</div>
</div>
<script src="jquery-3.4.1.min.js"></script>
<script src="cd_scripts.js"></script>
</body>
</html>
\ No newline at end of file
@charset "ISO-8859-1";
body {
background: #f5f5f5;
font-family: 'Noto Sans', sans-serif;
margin: 0;
color: #4c5667;
overflow-x: hidden !important;
padding-top:40px;
}
.message-box h1 {
color: #252932;
font-size: 98px;
font-weight: 700;
line-height: 98px;
text-shadow: rgba(61, 61, 61, 0.3) 1px 1px, rgba(61, 61, 61, 0.2) 2px 2px, rgba(61, 61, 61, 0.3) 3px 3px;
}
\ No newline at end of file
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="internal_server_error.css">
<link rel="stylesheet" href="bootstrap.min.css">
<title>CityDoctor - Internal Server Error</title>
</head>
<body>
<div class="ex-page-content bootstrap snippets">
<div class="container">
<div class="row">
<div class="col-sm-6">
<svg class="svg-box" width="380px" height="500px"
viewBox="0 0 837 1045" version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<g id="Page-1" stroke="none" stroke-width="1"
fill="none" fill-rule="evenodd" sketch:type="MSPage">
<path
d="M353,9 L626.664028,170 L626.664028,487 L353,642 L79.3359724,487 L79.3359724,170 L353,9 Z"
id="Polygon-1" stroke="#3bafda" stroke-width="6"
sketch:type="MSShapeGroup"></path>
<path
d="M78.5,529 L147,569.186414 L147,648.311216 L78.5,687 L10,648.311216 L10,569.186414 L78.5,529 Z"
id="Polygon-2" stroke="#7266ba" stroke-width="6"
sketch:type="MSShapeGroup"></path>
<path
d="M773,186 L827,217.538705 L827,279.636651 L773,310 L719,279.636651 L719,217.538705 L773,186 Z"
id="Polygon-3" stroke="#f76397" stroke-width="6"
sketch:type="MSShapeGroup"></path>
<path
d="M639,529 L773,607.846761 L773,763.091627 L639,839 L505,763.091627 L505,607.846761 L639,529 Z"
id="Polygon-4" stroke="#00b19d" stroke-width="6"
sketch:type="MSShapeGroup"></path>
<path
d="M281,801 L383,861.025276 L383,979.21169 L281,1037 L179,979.21169 L179,861.025276 L281,801 Z"
id="Polygon-5" stroke="#ffaa00" stroke-width="6"
sketch:type="MSShapeGroup"></path>
</g>
</svg>
</div>
<div class="col-sm-6">
<div class="message-box">
<h1 class="m-b-0">500</h1>
<p>Internal Server Error.</p>
<div class="buttons-con">
<div class="action-link-wrap">
<a href="index.html"
class="btn btn-custom btn-info waves-effect waves-light m-t-20">Go
to Home Page</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
\ No newline at end of file
.file-upload-wrapper {
border-style: dashed;
border-width: 5px;
height: 200px;
border-color: #bfbfbf;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="bootstrap.min.css">
<link rel="stylesheet" href="bootstrap4-toggle.min.css">
<link rel="stylesheet" href="dropzone.min.css">
<link rel="stylesheet" href="models.css">
<link rel="stylesheet" href="all.min.css">
<title>CityDoctor 3 - Models</title>
</head>
<body>
<div class="container fill" id="modelsPage">
<div class="row justify-content-center">
<div class="col-md-8">
<nav class="navbar navbar-expand-md navbar-light bg-light">
<div class="col">
<a class="navbar-brand">CityDoctor - Models</a>
</div>
<div class="col">
<button class="btn btn-outline-secondary float-right"
type="button" onclick="logoutClick()">Log Out</button>
</div>
</nav>
</div>
</div>
<div class="row justify-content-center mt-5">
<div class="col-md-8">
<div class="card border border-primary">
<h3 class="card-title card-header" data-toggle="collapse"
data-target="#collapseAdd" aria-expanded="false"
aria-controls="collapseAdd" id="headingAdd">
<button class="btn btn-link" data-toggle="collapse"
data-target="#collapseAdd" aria-expanded="false"
aria-controls="collapseAdd" style="font-size: 1.6rem">Add</button>
</h3>
<div id="collapseAdd" class="collapse" aria-labelledby="headingAdd">
<div class="card-body">
<form action="rest/models" class="dropzone" id="add-file-zone"
method="post">
<div class="fallback">
<input name="file" type="file" />
</div>
</form>
<div id="invalidFile" class="alert alert-danger mt-3"
style="display: none;">
<span id="invalidFileText"></span> <a class="close"
onclick="$('.alert').slideUp()">×</a>
</div>
<div class="progress mt-3">
<div id="file-progress" class="progress-bar" role="progressbar"
aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="models" class="mt-3"></div>
<!--
<div class="row justify-content-center mt-3">
<div class="col-md-8">
<div class="card border border-secondary">
<h5 class="card-title card-header" data-toggle="collapse"
data-target="#test" aria-expanded="true" aria-controls="test"
id="headingTest">
<button class="btn btn-link text-dark" data-toggle="collapse"
data-target="#test" aria-expanded="true" aria-controls="test">Test</button>
<span class="badge badge-success float-right">Parsing
Successful</span>
</h5>
<div id="test" class="collapse show" aria-labelledby="headingTest"
style="">
<div class="card-body">
<button class="btn btn-primary">View</button>
<button class="btn btn-danger float-right">Delete</button>
<h5 class="mt-3">Validation</h5>
<div class='list-group'>
<div class='list-group-item border-secondary'>
Upload validation configuration files to start a validation
process
<form id="testForm" method="post">
<input name="file" type="file" />
<button type="submit" class="btn btn-primary">Upload</button>
</form>
<div id="invalidConfigFile" class="alert alert-danger mt-3"
style="display: none;">
<span id="invalidFileText"></span> <a class="close"
onclick="$('.alert').slideUp()">×</a>
</div>
</div>
</div>
<h5 class="mt-3">Executed Validations</h5>
<div id="validationTest" class="list-group mt-3">
<div class="list-group-item border-secondary">
<h5>
testConfig.yml <span class="badge badge-success float-right">Validation
Successful</span>
</h5>
<button class="btn btn-primary">View</button>
<button class="btn btn-danger float-right">Delete</button>
<div>
Download Reports:
<button class="ml-3 btn btn-secondary">XML</button>
<button class="btn btn-secondary">PDF</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div> -->
</div>
<div class="container fill" id="viewPage" style="display: none;">
<div class="row">
<div class="col">
<button class="btn btn-primary" id="backButton">Back</button>
<button class="btn btn-outline-secondary float-right" onclick="logoutClick()">Log
Out</button>
</div>
</div>
<div class="row mt-3">
<div class="col-md-4" id="feature_tab">
<ul class="nav nav-tabs nav-fill">
<li class="nav-item"><a class="nav-link active" href="#bu"
data-toggle="tab">Buildings</a></li>
<li class="nav-item"><a class="nav-link" href="#veg"
data-toggle="tab">Vegetation</a></li>
<li class="nav-item"><a class="nav-link" href="#tra"
data-toggle="tab">Transportation</a></li>
<li class="nav-item"><a class="nav-link" href="#la"
data-toggle="tab">Land</a></li>
<li class="nav-item"><a class="nav-link" href="#bri"
data-toggle="tab">Bridges</a></li>
<li class="nav-item"><a class="nav-link" href="#wa"
data-toggle="tab">Water</a></li>
</ul>
<div class="mt-3">
<label for="only_errors">Show only erroneous features:</label>
<input id="only_errors" type="checkbox" data-toggle="toggle" data-size="sm">
</div>
<!-- <div class="mt-3 input-group">
<input type="text" class="form-control" id="search" oninput="searchInputEvent(this)" placeholder="Search...">
<span class="input-group-btn">
<button class="btn btn-default" type="button"><span class="glyphicon glyphicon-search"></span></button>
</span>
</div> -->
<div class="tab-content mt-3">
<div class="tab-pane active btn-group-vertical btn-group-toggle"
id="bu" data-toggle="buttons">
<!-- <label class="text-left btn btn-outline-primary active"> <input type="radio"
checked style="display: none;">test building
</label>
<label class="btn btn-outline-secondary">
<input type="radio" style="display: none;">geometry1
</label>
<label class="btn btn-outline-secondary">
<input type="radio" style="display: none;">geometry2
</label>
<label class="text-left btn btn-outline-primary"> <input type="radio" style="display: none;">test
building2
</label> -->
</div>
<div class="tab-pane btn-group-vertical btn-group-toggle" id="veg" data-toggle="buttons"></div>
<div class="tab-pane btn-group-vertical btn-group-toggle" id="tra" data-toggle="buttons"></div>
<div class="tab-pane btn-group-vertical btn-group-toggle" id="la" data-toggle="buttons"></div>
<div class="tab-pane btn-group-vertical btn-group-toggle" id="bri" data-toggle="buttons"></div>
<div class="tab-pane btn-group-vertical btn-group-toggle" id="wa" data-toggle="buttons"></div>
</div>
<div id="pages" class="mt-3">
<!-- <nav aria-label="feature navigation">
<ul class="pagination">
<li class="page-item"><a class="page-link" href="#">First</a></li>
<li class="page-item active"><a class="page-link" href="#">1</a></li>
<li class="page-item"><a class="page-link" href="#">2</a></li>
<li class="page-item"><a class="page-link" href="#">3</a></li>
<li class="page-item"><a class="page-link" href="#">4</a></li>
<li class="page-item"><a class="page-link" href="#">5</a></li>
<li class="page-item"><a class="page-link" href="#">6</a></li>
<li class="page-item"><a class="page-link" href="#">...</a></li>
<li class="page-item"><a class="page-link" href="#">Last</a></li>
</ul>
</nav> -->
</div>
</div>
<div class="col-md-8">
<canvas id="testCanvas"
style="width: 100%; height: 700px">
Your browser does not support HTML5 - Cannot display geometries.
</canvas>
</div>
</div>
<div class="row mt-2">
<div class="col-md-6">
<h5 id="error_heading">Errors:</h5>
<div class="list-group" id="error_list">
<!-- <button class="list-group-item list-group-item-action">Error2</button> -->
</div>
</div>
</div>
</div>
<!-- Modal -->
<div class="modal fade" id="validation_plan_modal" tabindex="-1" role="dialog"
aria-labelledby="validation_plan_label" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="validation_plan_label">Create Validation Plan</h5>
<button type="button" class="close" data-dismiss="modal"
aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="list-group">
<div class="list-group-item">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">minVertexDistance (m):</span>
</div>
<input type="text" class="form-control" aria-label="Minimum distance between points" value="0.0001"></input>
</div>
</div>
<div class="list-group-item" id="geometric_checks">
<h5>Geometric Checks</h5>
<!-- <div>
<input type="checkbox" checked id="check1" data-toggle="toggle" data-onstyle="success" data-offstyle="danger" data-size="sm">
<label for="check1">C_GE_R_TOO_FEW_POINTS</label>
</div>
<div>
<input type="checkbox" checked id="check2" data-toggle="toggle" data-onstyle="success" data-offstyle="danger" data-size="sm">
<label for="check2">C_GE_R_SELF_INTERSECTION</label>
<div class="ml-3 list-group list-group-flush">
<div class="list-group-item">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">Param1:</span>
</div>
<input type="text" class="form-control" value="DefaultValue1"></input>
</div>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">Param2:</span>
</div>
<input type="text" class="form-control" value="DefaultValue2"></input>
</div>
</div>
</div>
</div>
<div>
<input type="checkbox" checked id="check3" data-toggle="toggle" data-onstyle="success" data-offstyle="danger" data-size="sm">
<label for="check3">C_GE_R_TOO_FEW_POINTS</label>
</div> -->
</div>
<!-- <div class="list-group-item" id="semantic_checks">
<h5>Semantic Checks</h5>
</div> -->
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary float-left">Save</button>
<button type="button" class="btn btn-secondary"
data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Upload</button>
</div>
</div>
</div>
</div>
<script src="jquery-3.4.1.min.js"></script>
<script src="bootstrap.bundle.min.js"></script>
<script src="bootstrap4-toggle.min.js"></script>
<script src="dropzone.min.js"></script>
<script src="gl-matrix-min.js"></script>
<script src="models_scripts.js"></script>
<script src="app.js"></script>
</body>
</html>
\ No newline at end of file
package de.hft.stuttgart.citydoctor2.webservice.endpoints;
import java.io.IOException;
import javax.ws.rs.core.HttpHeaders;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.junit.Test;
public class BuildingEndpointTest {
@Test
public void testGetErrors() throws ClientProtocolException, IOException {
HttpClient client = HttpClients.createMinimal();
LoginValues login = TestUtils.login(client);
HttpGet get = new HttpGet("http://localhost:8080/CityDoctorWebService/rest/buildings/10/errors");
get.addHeader(HttpHeaders.AUTHORIZATION, "Bearer " + login.getToken());
HttpResponse response = client.execute(get);
System.out.println(TestUtils.readCompleteReponse(response));
}
}
package de.hft.stuttgart.citydoctor2.webservice.endpoints;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONObject;
import org.json.JSONTokener;
import org.junit.Test;
public class LoginEndpointTest {
@Test
public void testLoginCorrectPassword() throws ClientProtocolException, IOException {
HttpClient client = HttpClients.createMinimal();
HttpPost post = new HttpPost("http://localhost:8080/CityDoctorWebService/rest/login");
List<NameValuePair> params = new ArrayList<NameValuePair>(2);
params.add(new BasicNameValuePair("username", "Test"));
params.add(new BasicNameValuePair("password", "TestPassword"));
post.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
HttpResponse response = client.execute(post);
assertEquals(200, response.getStatusLine().getStatusCode());
try (BufferedReader br = new BufferedReader(new InputStreamReader(response.getEntity().getContent()))) {
JSONTokener tokener = new JSONTokener(br);
JSONObject o = new JSONObject(tokener);
assertNotNull(o.getString("token"));
}
}
@Test
public void testLoginIncorrectPassword() throws ClientProtocolException, IOException {
HttpClient client = HttpClients.createMinimal();
HttpPost post = new HttpPost("http://localhost:8080/CityDoctorWebService/rest/login");
List<NameValuePair> params = new ArrayList<NameValuePair>(2);
params.add(new BasicNameValuePair("username", "Test"));
params.add(new BasicNameValuePair("password", "TestIncorrectPassword"));
post.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
HttpResponse response = client.execute(post);
assertEquals(403, response.getStatusLine().getStatusCode());
}
}
package de.hft.stuttgart.citydoctor2.webservice.endpoints;
public class LoginValues {
private String token;
private int id;
public LoginValues(String token, int id) {
super();
this.token = token;
this.id = id;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
package de.hft.stuttgart.citydoctor2.webservice.endpoints;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
import javax.ws.rs.core.HttpHeaders;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.HttpClients;
import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONTokener;
import org.junit.Ignore;
import org.junit.Test;
public class ModelsEndpointTest {
@Test
public void testRetrievingModels() throws ClientProtocolException, IOException {
HttpClient client = HttpClients.createMinimal();
LoginValues login = TestUtils.login(client);
HttpGet get = new HttpGet("http://localhost:8080/CityDoctorWebService/rest/models");
get.addHeader(HttpHeaders.AUTHORIZATION, "Bearer " + login.getToken());
HttpResponse response = client.execute(get);
assertEquals(200, response.getStatusLine().getStatusCode());
JSONTokener tokener = TestUtils.tokenizeReponse(response);
JSONArray models = new JSONArray(tokener);
for (Object o : models) {
assertTrue(o instanceof JSONObject);
}
assertNotNull(models);
}
@Test
public void testUploadModel() throws ClientProtocolException, IOException {
HttpClient client = HttpClients.createMinimal();
LoginValues login = TestUtils.login(client);
HttpPost post = new HttpPost("http://localhost:8080/CityDoctorWebService/rest/models");
post.addHeader(HttpHeaders.AUTHORIZATION, "Bearer " + login.getToken());
File file = new File("C:\\Job\\CityGML Files\\1-stoeckach_multisurface_only.xml");
// File configFile = new File("src\\test\\resources\\testConfig.yml");
MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
entityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
entityBuilder.addBinaryBody("file", file);
// entityBuilder.addBinaryBody("configFile", configFile);
post.setEntity(entityBuilder.build());
HttpResponse response = client.execute(post);
int httpStatus = response.getStatusLine().getStatusCode();
assertEquals(200, httpStatus);
JSONTokener tokener = TestUtils.tokenizeReponse(response);
JSONObject model = new JSONObject(tokener);
assertNotNull(model);
assertEquals("1-stoeckach_multisurface_only.xml", model.getString("name"));
}
@Ignore
@Test
public void downloadPdfFile() throws ClientProtocolException, IOException {
HttpClient client = HttpClients.createMinimal();
LoginValues login = TestUtils.login(client);
HttpGet get = new HttpGet(
"http://localhost:8080/CityDoctorWebService/rest/" + login.getId() + "/models/15/pdf");
get.addHeader(HttpHeaders.AUTHORIZATION, "Bearer " + login.getToken());
HttpResponse response = client.execute(get);
assertEquals(200, response.getStatusLine().getStatusCode());
Path path = Files.createTempFile(null, null);
Files.copy(response.getEntity().getContent(), path, StandardCopyOption.REPLACE_EXISTING);
assertTrue(path.toFile().exists());
}
@Ignore
@Test
public void downloadXmlFile() throws ClientProtocolException, IOException {
HttpClient client = HttpClients.createMinimal();
LoginValues login = TestUtils.login(client);
HttpGet get = new HttpGet(
"http://localhost:8080/CityDoctorWebService/rest/" + login.getId() + "/models/15/xml");
get.addHeader(HttpHeaders.AUTHORIZATION, "Bearer " + login.getToken());
HttpResponse response = client.execute(get);
assertEquals(200, response.getStatusLine().getStatusCode());
Path path = Files.createTempFile(null, null);
Files.copy(response.getEntity().getContent(), path, StandardCopyOption.REPLACE_EXISTING);
assertTrue(path.toFile().exists());
}
@Test
public void testGetBuildings() throws ClientProtocolException, IOException {
HttpClient client = HttpClients.createMinimal();
LoginValues login = TestUtils.login(client);
HttpGet get = new HttpGet("http://localhost:8080/CityDoctorWebService/rest/models/5/buildings?from=0");
get.addHeader(HttpHeaders.AUTHORIZATION, "Bearer " + login.getToken());
HttpResponse response = client.execute(get);
String readCompleteReponse = TestUtils.readCompleteReponse(response);
System.out.println(readCompleteReponse);
// JSONTokener tokener = TestUtils.tokenizeReponse(response);
// JSONArray models = new JSONArray(tokener);
// for (Object o : models) {
// System.out.println(o);
// }
}
}
package de.hft.stuttgart.citydoctor2.webservice.endpoints;
import static org.junit.Assert.assertEquals;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.junit.Test;
import de.hft.stuttgart.citydoctor2.webservice.database.UserQueries;
import de.hft.stuttgart.citydoctor2.webservice.utils.HibernateUtils;
public class RegisterEndpointTest {
@Test
public void testRegisterExistingUser() throws ClientProtocolException, IOException {
HttpClient client = HttpClients.createMinimal();
HttpPost post = new HttpPost("http://localhost:8080/CityDoctorWebService/rest/register");
List<NameValuePair> params = new ArrayList<NameValuePair>(2);
params.add(new BasicNameValuePair("username", "Test"));
params.add(new BasicNameValuePair("password", "TestPassword"));
post.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
HttpResponse response = client.execute(post);
assertEquals(409, response.getStatusLine().getStatusCode());
}
@Test
public void testRegisterNewUser() throws ClientProtocolException, IOException {
HttpClient client = HttpClients.createMinimal();
HttpPost post = new HttpPost("http://localhost:8080/CityDoctorWebService/rest/register");
List<NameValuePair> params = new ArrayList<NameValuePair>(2);
params.add(new BasicNameValuePair("username", "TestNotExisting"));
params.add(new BasicNameValuePair("password", "TestPassword"));
post.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
HttpResponse response = client.execute(post);
assertEquals(200, response.getStatusLine().getStatusCode());
EntityManager manager = HibernateUtils.createManager();
UserQueries.deleteUser(UserQueries.getUserForUsername("TestNotExisting", manager), manager);
manager.close();
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment