import pandas as pd

log = pd.read_csv("../dataset/git_log_refactoring.gz", parse_dates=[3])
log.head()

"""
Explanation: Aktueller Stand der Umstellung von JDBC auf JPA
Hintergrund
Technical Requirement AB311: „...um die Standardisierung hin zu JavaEE 8 vorzunehmen, soll die Datenbankzugriffstechnologie JPA statt JDBC genutzt werden.“
<sub><sup>JPA: Java Persistence API (neuere Zugriffsmöglichkeit auf eine Datenbank)</sub></sup><br/>
<sub><sup>JDBC: Java Database Connectivity (klassische Zugriffsmöglichkeit auf Datenbank)</sub></sup>
Datenimport
Einlesen der Entwicklungshistorie mit Projektstand vom 15.01.2019 aus dem Git Versionskontrollsystem.
End of explanation
"""


log['file'][0]

"""
Explanation: Erkennung der technischen Komponenten
Anhand des Dateipfades an der 9. Stelle kann zwischen den beiden Technologien JPA und JDBC unterschieden werden.
End of explanation
"""


log['tech'] = log['file'].str.extract("/(jpa|jdbc)/")
log = log.dropna()
log.head()

"""
Explanation: Mit Hilfe eines regulären Ausdrucks können die beiden Datenbankzugriffstechnologien bestimmt werden. Alle sonstigen Dateien werden mittels dropna() herausgefiltert.
End of explanation
"""


log['lines'] = log['additions'] - log['deletions']
log.head()

"""
Explanation: Arbeitsfortschritt
Um den Fortschritt nachvollziehen zu können, berechnen wir die geänderten Quellcodezeilen.
End of explanation
"""


log_timed = log.groupby(['timestamp', 'tech']).lines.sum()
log_timed.head()

"""
Explanation: Zeitliche Zusammenführung
Die jeweiligen Fortschritte werden nach ihren Zeitstempeln zusammengeführt.
End of explanation
"""


log_progress = log_timed.unstack().fillna(0).cumsum()
log_progress.head()

"""
Explanation: Darstellung
Für den Vergleich der Fortschritte werden beide Technologien nebeneinander aufgeführt.
End of explanation
"""


progress_per_year = log_progress.groupby(log_progress.index.year).last()
progress_per_year.index.name = "year"
progress_per_year

"""
Explanation: Fortschrittsübersicht über die Jahre
Es wird eine Tabelle erzeugt, welche den Fortschrittsverlauf pro Entwicklungsjahr darstellt.
End of explanation
"""


log_progress.plot(figsize=[15,8]);

"""
Explanation: Derzeitiger Stand der Technologieumstellung
Dargestellt nach den Zeilenänderungen je Technologie.
End of explanation
"""


