Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
DECIDE_Components
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
DECIDE Public
DECIDE_Components
Commits
db0fbf71
Commit
db0fbf71
authored
6 years ago
by
Lopez Osa, María Jose
Browse files
Options
Downloads
Patches
Plain Diff
Delete AppController.java
parent
3ff6333b
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
AppController/src/main/java/eu/DECIDEh2020/appcontroller/AppController.java
+0
-402
0 additions, 402 deletions
...main/java/eu/DECIDEh2020/appcontroller/AppController.java
with
0 additions
and
402 deletions
AppController/src/main/java/eu/DECIDEh2020/appcontroller/AppController.java
deleted
100644 → 0
+
0
−
402
View file @
3ff6333b
package
eu.DECIDEh2020.appcontroller
;
import
org.eclipse.jgit.api.Git
;
import
org.eclipse.jgit.api.errors.GitAPIException
;
import
org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider
;
import
org.json.simple.JSONArray
;
import
org.json.simple.JSONObject
;
import
org.json.simple.parser.JSONParser
;
import
org.json.simple.parser.ParseException
;
import
java.io.*
;
import
java.util.Date
;
import
java.util.ListIterator
;
/*
* Copyright (c) 2017 Fraunhofer FOKUS.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the
* Eclipse Public License version 2.0 which accompanies
* this distribution, and is available at
* https://opensource.org/licenses/EPL-2.0
*
* Contributors:
*
* Leo Li (Fraunhofer FOKUS) **Initially developed in the context of DECIDE EU project www.DECIDE-h2020.eu */
public
class
AppController
{
private
Git
GitRepository
;
private
String
Username
;
private
String
Password
;
private
String
ApplicationDesc
;
private
String
RepositoryUrl
;
private
String
Directory
;
/**
* Constructor for the AppController. This constructor enables the possibility to use a username and a password for repositories which are private.
*
* @param Password The password which is used to access a git account.
* @param Username The username used to access a git account.
* @param ApplicationDesc The path of the application description file (not yet needed).
* @param RepositoryUrl The url of the to be used git repository (master repository).
* @param Directory The local directory to save the git repository content.
*/
public
AppController
(
String
Username
,
String
Password
,
String
ApplicationDesc
,
String
RepositoryUrl
,
String
Directory
)
{
this
.
ApplicationDesc
=
ApplicationDesc
;
this
.
Username
=
Username
;
this
.
Password
=
Password
;
this
.
RepositoryUrl
=
RepositoryUrl
;
this
.
Directory
=
Directory
;
}
/**
* Constructor for the AppController. This constructor may only be used on public git repositories.
*
* @param ApplicationDesc The path of the application description file (not yet needed).
* @param RepositoryUrl The url of the to be used git repository (master repository).
* @param Directory The local directory to save the git repository content.
*/
public
AppController
(
String
ApplicationDesc
,
String
RepositoryUrl
,
String
Directory
)
{
this
.
ApplicationDesc
=
ApplicationDesc
;
this
.
RepositoryUrl
=
RepositoryUrl
;
this
.
Directory
=
Directory
;
}
/**
* Clone the defined repository to the defined directory or if it already exists opens the repository. The method uses the git password and username to clone private repositories.
*
* @throws GitAPIException
* @throws IOException
*/
public
void
cloneRepositoryWithCred
()
throws
GitAPIException
,
IOException
{
if
(!
checkRepository
())
{
GitRepository
=
Git
.
cloneRepository
()
.
setURI
(
RepositoryUrl
)
.
setDirectory
(
new
File
(
Directory
))
.
setCredentialsProvider
(
new
UsernamePasswordCredentialsProvider
(
Username
,
Password
))
.
setCloneAllBranches
(
true
)
.
call
();
}
else
GitRepository
=
Git
.
open
(
new
File
(
Directory
));
}
/**
* Clone the defined repository to the defined directory or if it already exists opens the repository.
*
* @throws GitAPIException
* @throws IOException
*/
public
void
cloneRepository
()
throws
GitAPIException
,
IOException
{
if
(!
checkRepository
())
{
GitRepository
=
Git
.
cloneRepository
()
.
setURI
(
RepositoryUrl
)
.
setDirectory
(
new
File
(
Directory
))
.
setCloneAllBranches
(
true
)
.
call
();
}
else
GitRepository
=
Git
.
open
(
new
File
(
Directory
));
}
/**
* Pull new changes from defined repository which is private and include them into the local directory.
*
* @throws GitAPIException
* @throws IOException
*/
public
void
pullRepoWithCred
()
throws
GitAPIException
,
IOException
{
GitRepository
=
Git
.
open
(
new
File
(
Directory
));
GitRepository
.
pull
()
.
setCredentialsProvider
(
new
UsernamePasswordCredentialsProvider
(
Username
,
Password
))
.
call
();
}
/**
* Pull new changes from the defined repository and includes them in the local directory.
*
* @throws GitAPIException
* @throws IOException
*/
public
void
pullRepo
()
throws
GitAPIException
,
IOException
{
GitRepository
=
Git
.
open
(
new
File
(
Directory
));
GitRepository
.
pull
()
.
call
();
}
/**
* Push new content to the repository.
*
* @throws GitAPIException
* @throws IOException
*/
public
void
pushRepo
()
throws
GitAPIException
,
IOException
{
GitRepository
=
Git
.
open
(
new
File
(
Directory
));
GitRepository
.
push
()
.
call
();
}
/**
* Push new content to the private repository.
*
* @throws GitAPIException
* @throws IOException
*/
public
void
pushRepoWithCred
()
throws
GitAPIException
,
IOException
{
GitRepository
=
Git
.
open
(
new
File
(
Directory
));
GitRepository
.
push
()
.
setCredentialsProvider
(
new
UsernamePasswordCredentialsProvider
(
Username
,
Password
))
.
call
();
}
/**
* Add the JSONHistory file to the index to be commited next.
*
* @throws GitAPIException
* @throws IOException
*/
public
void
addHistory
()
throws
GitAPIException
,
IOException
{
GitRepository
=
Git
.
open
(
new
File
(
Directory
));
GitRepository
.
add
().
addFilepattern
(
"JSONHistory.json"
).
call
();
}
/**
* Commit the latest changes in the repository.
*
* @param message The commit message which has to be set by the commiter.
* @throws GitAPIException
* @throws IOException
*/
public
void
commitHistory
(
String
message
)
throws
GitAPIException
,
IOException
{
GitRepository
=
Git
.
open
(
new
File
(
Directory
));
GitRepository
.
commit
().
setMessage
(
message
).
call
();
}
/**
* Check if the directory to save the master repository already exists.
*
* @return Boolean value if the set directory already exists.
*/
private
boolean
checkRepository
()
{
File
folder
=
new
File
(
Directory
);
if
(
folder
.
exists
())
{
if
(
folder
.
isDirectory
())
{
String
[]
content
=
folder
.
list
();
for
(
String
file
:
content
)
{
if
(
file
.
equals
(
".git"
))
return
true
;
}
}
}
return
false
;
}
/**
* Create a new SLABreach object and add it to the last saved deployment of the defined service in the existing history.
*
* @param serviceId A string to identify the microservice where a breach occurred.
* @param slaBreach A JSONObject which represents the new SLABreach.
* @throws IOException
*/
public
void
newBreach
(
String
serviceId
,
JSONObject
slaBreach
)
throws
IOException
{
JSONArray
history
=
getHistory
();
JSONObject
microservice
;
JSONArray
entry
;
ListIterator
listIterator
=
history
.
listIterator
();
for
(
int
i
=
0
;
i
<
history
.
size
();
i
++)
{
JSONObject
service
=
(
JSONObject
)
listIterator
.
next
();
if
(
service
.
keySet
().
contains
(
serviceId
))
{
microservice
=
service
;
history
.
remove
(
service
);
entry
=
(
JSONArray
)
microservice
.
get
(
serviceId
);
JSONObject
date
=
(
JSONObject
)
entry
.
get
(
entry
.
size
()
-
1
);
entry
.
remove
(
entry
.
get
(
entry
.
size
()
-
1
));
JSONArray
breaches
=
(
JSONArray
)
date
.
get
(
"sla_breaches"
);
breaches
.
add
(
slaBreach
);
JSONObject
changed
=
new
JSONObject
();
changed
.
put
(
"date"
,
date
.
get
(
"date"
));
changed
.
put
(
"deployed_on"
,
date
.
get
(
"deployed_on"
));
changed
.
put
(
"sla_breaches"
,
breaches
);
entry
.
add
(
changed
);
microservice
.
put
(
serviceId
,
entry
);
history
.
add
(
microservice
);
break
;
}
}
try
(
FileWriter
file
=
new
FileWriter
(
Directory
+
"/JSONHistory.json"
))
{
file
.
write
(
history
.
toString
());
}
}
/**
* Create a new SLABreach object and add it to the defined dated deployment of the defined service in the existing history.
*
* @param date A string containing the date of the deployment to find the deployment where a new SLABreach is to set.
* @param serviceId The service id to identify the microservice where a new breach occurred.
* @param slaBreach A JSONObject which represents the new SLABreach.
*/
public
void
newBreach
(
String
date
,
String
serviceId
,
JSONObject
slaBreach
)
throws
IOException
{
JSONArray
history
=
getHistory
();
JSONObject
microservice
=
null
;
JSONArray
entry
;
ListIterator
listIterator
=
history
.
listIterator
();
for
(
int
i
=
0
;
i
<
history
.
size
();
i
++)
{
JSONObject
service
=
(
JSONObject
)
listIterator
.
next
();
if
(
service
.
keySet
().
contains
(
serviceId
))
{
microservice
=
service
;
}
}
if
(
microservice
!=
null
)
{
entry
=
(
JSONArray
)
microservice
.
get
(
serviceId
);
ListIterator
listIterator1
=
entry
.
listIterator
();
for
(
int
k
=
0
;
k
<
entry
.
size
();
k
++)
{
JSONObject
holder
=
(
JSONObject
)
listIterator1
.
next
();
if
(
holder
.
values
().
contains
(
date
))
{
history
.
remove
(
microservice
);
entry
.
remove
(
holder
);
JSONArray
breaches
=
(
JSONArray
)
holder
.
get
(
"sla_breaches"
);
breaches
.
add
(
slaBreach
);
JSONObject
changed
=
new
JSONObject
();
changed
.
put
(
"date"
,
holder
.
get
(
"date"
));
changed
.
put
(
"deployed_on"
,
holder
.
get
(
"deployed_on"
));
changed
.
put
(
"sla_breaches"
,
breaches
);
entry
.
add
(
changed
);
microservice
.
put
(
serviceId
,
entry
);
history
.
add
(
microservice
);
break
;
}
}
}
try
(
FileWriter
file
=
new
FileWriter
(
Directory
+
"/JSONHistory.json"
))
{
file
.
write
(
history
.
toString
());
}
}
/**
* Create a new history entry in the existing history. If no history exists, create it aswell.
*
* @param serviceId The identifier of the deployed service.
* @param serviceProvider The Name/Identifier of the service provide used to deploy the service on.
*/
public
void
writeHistory
(
String
serviceId
,
String
serviceProvider
)
throws
IOException
{
JSONArray
history
=
getHistory
();
// DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String
date
=
String
.
valueOf
(
new
Date
().
getTime
());
JSONObject
microservice
=
new
JSONObject
();
JSONArray
entry
=
new
JSONArray
();
boolean
found
=
false
;
ListIterator
listIterator
=
history
.
listIterator
();
for
(
int
i
=
0
;
i
<
history
.
size
();
i
++)
{
JSONObject
service
=
(
JSONObject
)
listIterator
.
next
();
if
(
service
.
keySet
().
contains
(
serviceId
))
{
microservice
=
service
;
history
.
remove
(
service
);
entry
=
(
JSONArray
)
microservice
.
get
(
serviceId
);
entry
.
add
(
newEntry
(
date
,
serviceProvider
));
microservice
.
put
(
serviceId
,
entry
);
history
.
add
(
microservice
);
found
=
true
;
break
;
}
}
if
(!
found
)
{
JSONObject
his
=
(
newEntry
(
date
,
serviceProvider
));
entry
.
add
(
his
);
microservice
.
put
(
serviceId
,
entry
);
history
.
add
(
microservice
);
}
try
(
FileWriter
file
=
new
FileWriter
(
Directory
+
"/JSONHistory.json"
))
{
file
.
write
(
history
.
toString
());
}
}
/**
* Create a new entry to be added into the history.
*
* @return JSONObject which represents a possibly newly created entry for the history
*/
private
JSONObject
newEntry
(
String
date
,
String
serviceProvider
)
{
JSONObject
history
=
new
JSONObject
();
history
.
put
(
"date"
,
date
);
history
.
put
(
"deployed_on"
,
serviceProvider
);
history
.
put
(
"sla_breaches"
,
new
JSONArray
());
return
history
;
}
/**
* Retrieve an existing or create a new history.
*
* @return JSONArray which gives a representation of the existing history or returns a new empty one
*/
private
JSONArray
getHistory
()
{
File
folder
=
new
File
(
Directory
);
JSONParser
parser
=
new
JSONParser
();
if
(
folder
.
exists
())
{
if
(
folder
.
isDirectory
())
{
String
[]
content
=
folder
.
list
();
for
(
String
file
:
content
)
{
if
(
file
.
contains
(
"JSONHistory"
))
{
try
{
return
(
JSONArray
)
parser
.
parse
(
new
FileReader
(
Directory
+
"/"
+
file
));
}
catch
(
ParseException
|
IOException
e
)
{
e
.
printStackTrace
();
}
}
}
File
history
=
new
File
(
Directory
+
"/JSONHistory.json"
);
}
}
return
new
JSONArray
();
}
public
Git
getGitRepository
()
{
return
GitRepository
;
}
public
void
setGitRepository
(
Git
gitRepository
)
{
GitRepository
=
gitRepository
;
}
public
String
getRepositoryUrl
()
{
return
RepositoryUrl
;
}
public
void
setRepositoryUrl
(
String
repositoryUrl
)
{
RepositoryUrl
=
repositoryUrl
;
}
public
String
getDirectory
()
{
return
Directory
;
}
public
void
setDirectory
(
String
directory
)
{
Directory
=
directory
;
}
public
String
getUsername
()
{
return
Username
;
}
public
void
setUsername
(
String
username
)
{
Username
=
username
;
}
public
String
getApplicationDesc
()
{
return
ApplicationDesc
;
}
public
void
setApplicationDesc
(
String
applicationDesc
)
{
ApplicationDesc
=
applicationDesc
;
}
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment