text: "use strict";
  Object.defineProperty(exports, "__esModule", { value: true });
  var PhysicalFolder_1 = require("../../resource/v1/physical/PhysicalFolder");
  var PhysicalFile_1 = require("../../resource/v1/physical/PhysicalFile");
  var Errors_1 = require("../../Errors");
  var path = require("path");
  var PhysicalFSManager = (function () {
      function PhysicalFSManager() {
          this.uid = 'PhysicalFSManager_1.0.2';
      }
      PhysicalFSManager.prototype.serialize = function (resource, obj) {
          if (!resource.realPath)
              throw Errors_1.Errors.UnrecognizedResource;
          return {
              realPath: resource.realPath,
              dateCreation: resource.dateCreation,
              dateLastModified: resource.dateLastModified,
              properties: resource.properties
          };
      };
      PhysicalFSManager.prototype.unserialize = function (data, obj) {
          var rs;
          if (obj.type.isFile)
              rs = new PhysicalFile_1.PhysicalFile(data.realPath, null, this);
          else
              rs = new PhysicalFolder_1.PhysicalFolder(data.realPath, null, this);
          rs.dateCreation = data.dateCreation;
          rs.dateLastModified = data.dateLastModified;
          rs.properties = data.properties;
          return rs;
      };
      PhysicalFSManager.prototype.newResource = function (fullPath, name, type, parent) {
          var parentRealPath = parent.realPath;
          if (!parentRealPath)
              throw Errors_1.Errors.ParentPropertiesMissing;
          var newRealPath = path.join(parentRealPath, name);
          if (type.isDirectory)
              return new PhysicalFolder_1.PhysicalFolder(newRealPath, parent, this);
          else
              return new PhysicalFile_1.PhysicalFile(newRealPath, parent, this);
      };
      return PhysicalFSManager;
  }());
  exports.PhysicalFSManager = PhysicalFSManager;
  