From 18ed93c14fcafdfeb3f659242a43672b373cb370 Mon Sep 17 00:00:00 2001
From: Lucas Fernandes de Oliveira <lfo14@inf.ufpr.br>
Date: Mon, 29 May 2017 10:52:53 -0300
Subject: [PATCH] Issue #14: Convert Engine class to Singletion pattern

Signed-off-by: Lucas Fernandes de Oliveira <lfo14@inf.ufpr.br>
---
 src/core/engine.spec.ts |  2 +-
 src/core/engine.ts      | 12 +++++++++++-
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/core/engine.spec.ts b/src/core/engine.spec.ts
index 13f64fcb..b6430883 100644
--- a/src/core/engine.spec.ts
+++ b/src/core/engine.spec.ts
@@ -27,7 +27,7 @@ import { View } from "./view";
 import { engineScenario } from "../../test/scenario";
 
 describe("engine class", () => {
-    const engine = new Engine();
+    const engine = Engine.getInstance();
 
     const met = engineScenario.metrics;
     const dim = engineScenario.dimensions;
diff --git a/src/core/engine.ts b/src/core/engine.ts
index af1640a8..b060a2f7 100644
--- a/src/core/engine.ts
+++ b/src/core/engine.ts
@@ -25,11 +25,21 @@ import { Query } from "../common/query";
 import { RelationType } from "../common/types";
 
 export class Engine {
+    private static instance: Engine;
+
     private views: View[] = [];
     private metrics: Metric[] = [];
     private dimensions: Dimension[] = [];
 
-    constructor () { }
+    private constructor () { }
+
+    public static getInstance(): Engine {
+        if (this.instance == null) {
+            this.instance = new Engine();
+        }
+
+        return this.instance;
+    }
 
     public getViews() {
         return this.views;
-- 
GitLab