* * @author Robin Appelman * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ namespace OC\Files\Cache; use OC\DB\QueryBuilder\QueryBuilder; use OC\SystemConfig; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IDBConnection; use Psr\Log\LoggerInterface; /** * Query builder with commonly used helpers for filecache queries */ class CacheQueryBuilder extends QueryBuilder { private $alias = null; public function __construct(IDBConnection $connection, SystemConfig $systemConfig, LoggerInterface $logger) { parent::__construct($connection, $systemConfig, $logger); } public function selectFileCache(string $alias = null, bool $joinExtendedCache = true) { $name = $alias ? $alias : 'filecache'; $this->select("$name.fileid", 'storage', 'path', 'path_hash', "$name.parent", "$name.name", 'mimetype', 'mimepart', 'size', 'mtime', 'storage_mtime', 'encrypted', 'etag', 'permissions', 'checksum', 'unencrypted_size') ->from('filecache', $name); if ($joinExtendedCache) { $this->addSelect('metadata_etag', 'creation_time', 'upload_time'); $this->leftJoin($name, 'filecache_extended', 'fe', $this->expr()->eq("$name.fileid", 'fe.fileid')); } $this->alias = $name; return $this; } public function whereStorageId(int $storageId) { $this->andWhere($this->expr()->eq('storage', $this->createNamedParameter($storageId, IQueryBuilder::PARAM_INT))); return $this; } public function whereFileId(int $fileId) { $alias = $this->alias; if ($alias) { $alias .= '.'; } else { $alias = ''; } $this->andWhere($this->expr()->eq("{$alias}fileid", $this->createNamedParameter($fileId, IQueryBuilder::PARAM_INT))); return $this; } public function wherePath(string $path) { $this->andWhere($this->expr()->eq('path_hash', $this->createNamedParameter(md5($path)))); return $this; } public function whereParent(int $parent) { $alias = $this->alias; if ($alias) { $alias .= '.'; } else { $alias = ''; } $this->andWhere($this->expr()->eq("{$alias}parent", $this->createNamedParameter($parent, IQueryBuilder::PARAM_INT))); return $this; } public function whereParentInParameter(string $parameter) { $alias = $this->alias; if ($alias) { $alias .= '.'; } else { $alias = ''; } $this->andWhere($this->expr()->in("{$alias}parent", $this->createParameter($parameter))); return $this; } } ption> A seamless aspect-oriented extension to the Java programming language: https://github.com/eclipse-aspectj/aspectjwww-data
aboutsummaryrefslogtreecommitdiffstats
blob: 531b6f12074604558d4fc250cf4ec086631a146c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/*
Copyright (c) Xerox Corporation 1998-2002.  All rights reserved.

Use and copying of this software and preparation of derivative works based
upon this software are permitted.  Any distribution of this software or
derivative works must comply with all applicable United States export control
laws.

This software is made available AS IS, and Xerox Corporation makes no warranty
about the software, its performance or its conformity to any specification.
*/

package tracing;

/**
 * TwoDShape is an abstract class that defines generic functionality
 * for 2D shapes.
 */
public abstract class TwoDShape {
    /**
     * Coordinates of the center of the shape.
     */
    protected double x, y;

    protected TwoDShape(double x, double y) {
        this.x = x; this.y = y;
    }

    /**
     * Returns the x coordinate of the shape.
     */
    public double getX() { return x; }

    /**
     * Returns the y coordinate of the shape.
     */
    public double getY() { return y; }

    /**
     * Returns the distance between this shape and the shape given as
     * parameter.
     */
    public double distance(TwoDShape s) {
        double dx = Math.abs(s.getX() - x);
        double dy = Math.abs(s.getY() - y);
        return Math.sqrt(dx*dx + dy*dy);
    }

    /**
     * Returns the perimeter of this shape. Must be defined in
     * subclasses.
     */
    public abstract double perimeter();

    /**
     * Returns the area of this shape. Must be defined in
     * subclasses.
     */
    public abstract double area();

    /**
     * Returns a string representation of 2D shapes -- simply its
     * coordinates.
     */
    public String toString() {
        return (" @ (" + String.valueOf(x) + ", " + String.valueOf(y) + ") ");
    }
}